說,我在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