簡體   English   中英

如何在Linux Shell中獲取命令返回狀態

[英]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

或者直接將ifgrep一起使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM