2014-11-25 81 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