沒有安靜選項的條件 grep

沒有安靜選項的條件 grep

-q我一直認為有條件使用時必須使用安靜( )選項grep。但重新閱讀該man頁面似乎沒有它也應該工作。

因此,如果您想列印匹配項並在條件中使用它,您可以這樣做嗎

grep PATTERN FILE && do_something_else

唯一讓我不確定的是退出狀態似乎略有不同。

-q

  • grep 將「如果找到任何匹配項,則立即以零狀態退出,即使偵測到錯誤」。

沒有-q

  • 「如果找到選定的行,則退出狀態為 0;如果未找到,則退出狀態為 1。 若發生錯誤,退出狀態為 2」。

但我想不出一個例子可以讓差異變得明顯?

答案1

這是一個例子:

$ echo "foo" > file
$ grep foo file wrongfile; echo "Exit status: $?"
file:foo
grep: wrongfile: No such file or directory
Exit status: 2
$ grep -q foo file wrongfile;  echo "Exit status: $?"
Exit status: 0

因此,我們有一個名為 的文件file,其中包含字串foo.當我運行grepon-qfile不存在的wrongfile,因為file包含匹配項,儘管出現“沒有這樣的文件”錯誤,但仍以狀態 grep退出。0

相關內容