quiet オプションなしの条件付き grep

quiet オプションなしの条件付き grep

条件付きで使用する場合は、常に quiet ( -q) オプションを使用する必要があると考えていましたgrep。しかし、ページを再度読んでみると、manそれがなくても動作するようです。

マッチしたものを印刷して条件文で使用したい場合は、次のようにすればよいでしょう。

grep PATTERN FILE && do_something_else

唯一不安なのは、終了ステータスに若干の違いがあるように見えることです。

-q

  • grepは、一致するものが見つかった場合、ステータス0で直ちに終了します。エラーが検出された場合でも「」。

それなし-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。をオンgrepにして を実行すると、存在しない には一致するものが含まれていたため、 「そのようなファイルはありません」というエラーにもかかわらず、ステータス で終了しました。-qfilewrongfilefilegrep0

関連情報