说,我在我的shell中调用grep "blabla" $file
。我怎么知道grep是否发现" blabla"在$ file?
我尝试ret='grep "blabla" $file'
,这会通过查看ret
的值来实现吗?如果是,是ret
整数值还是字符串值还是其他什么?
答案 0 :(得分:4)
如果你做的话
ret='grep "blabla" $file'
然后ret
将包含字符串“grep”blabla“$ file”。
如果你这样做(你的意思)
ret=`grep "blabla" $file`
然后ret
将包含任何输出grep
吐出($file
中与“blabla”匹配的行。)
如果您只是想知道grep
是否在$file
中找到了与“blabla”相匹配的任何行,那么您需要检查grep -q blabla "$file"
的返回代码(请注意,您不会需要引用文字字符串,当它们不包含特殊字符并且应该引用变量引用时)。
变量$?
包含最近执行的命令的返回码。所以
grep -q blabla "$file"
echo "grep returned: $?"
将回显grep
的返回码,如果输出任何行,则返回0
。
最简单的方法是测试并执行某些操作但是,根本不要使用$?
,而是将grep
调用嵌入if
这样的语句中
if grep -q blabla "$file"; then
echo grep found something
else
echo grep found nothing
fi
答案 1 :(得分:2)
运行命令时
grep blabla "$file"
状态保存在变量$?
中。 0表示好,大于0表示不好。那么你
可以吗
grep -q blabla "$file"
if [ $? = 0 ]
then
echo found
fi
或保存到变量
grep -q blabla "$file"
ret=$?
if [ $ret = 0 ]
then
echo found
fi
或者直接将if
与grep
一起使用
if grep -q blabla "$file"
then
echo found
fi