[英]How can I obtain command returning status in linux shell
說,我在外殼grep "blabla" $file
中將grep "blabla" $file
稱為grep "blabla" $file
。 我怎么知道grep是否在$ file中找到“ blabla”?
我嘗試ret='grep "blabla" $file'
,通過查看ret
的值可以正常工作嗎? 如果是,是ret
整數值還是字符串值或其他?
如果你確實做到
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
運行命令時
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.