说,我在shell中调用grep "blabla" $file
。我怎么知道grep是否在$ file中找到了“blabla”?如何在linux shell中获取命令返回状态
我试试ret='grep "blabla" $file'
,请问这个工作是通过查看ret
的值吗?如果是,是ret
整数值或字符串值还是别的?
说,我在shell中调用grep "blabla" $file
。我怎么知道grep是否在$ file中找到了“blabla”?如何在linux shell中获取命令返回状态
我试试ret='grep "blabla" $file'
,请问这个工作是通过查看ret
的值吗?如果是,是ret
整数值或字符串值还是别的?
如果你做的正是
ret='grep "blabla" $file'
然后ret
将包含字符串“grep”blabla“$ file”。
如果你(你的意思)
ret=`grep "blabla" $file`
然后ret
将包含任何输出grep
吐出(匹配在$file
“布拉布拉”行)。
如果你只是想知道是否grep
发现,在$file
,那么你要检查的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
最简单的方法
当您运行命令
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