如何在 if 语句中使用 wc -l 整数输出

马尤克·萨卡尔

我正在尝试执行命令git diff | grep pkg/client/clientset | wc -l并检查输出是否大于 0。我有以下脚本

if [ "$(git diff | grep pkg/client/clientset | wc -l "$i")" -gt "0" ]; then
    echo "Hello"
fi

执行脚本时出现以下错误。我得到的错误是

line 29: [: : integer expression expected

知道会出什么问题吗?

林·杜拉特

- 编辑 -

评论员戈登戴维森和 iBug 指出,答案中有一些不正确的陈述。他们已在此版本的答案中得到纠正。但最终结论(删除"$i")保持不变。

wc -l "$i"将计算文件中的行数$i如果您从未用作i变量,i则将为空,命令将为wc -l "". 在 STDOUT 和wc: invalid zero-length file nameSTDERR上的输出将是空的如果使用该变量iwc很可能会抱怨文件不存在。关键是,它wc不会读取 STDIN。

我也对引用做了一些不正确的陈述。正如所指出的,在(之间),它是一个不同的引用上下文。这可以显示如下:

$ a="$(/usr/bin/echo "hop")"
$ echo $a
hop
$ b=hop
$ a="$(/usr/bin/echo "$b")"
$ echo $a
hop

只需"$i"wc-l将解决您的问题。

if [ "$(git diff | grep pkg/client/clientset | wc -l)" -gt "0" ]; then
    echo "Hello"
fi

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章