2014-11-25 57 views
0

说,我在shell中调用grep "blabla" $file。我怎么知道grep是否在$ file中找到了“blabla”?如何在linux shell中获取命令返回状态

我试试ret='grep "blabla" $file',请问这个工作是通过查看ret的值吗?如果是,是ret整数值或字符串值还是别的?

回答

4

如果你做的正是

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 
最简单的方法
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 

或者只是使用ifgrep直接

if grep -q blabla "$file" 
then 
    echo found 
fi