我正在尝试执行命令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 name
STDERR上的输出将是空的。如果使用该变量i
,wc
很可能会抱怨文件不存在。关键是,它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] 删除。
我来说两句