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

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

-q私は常に使用するときにQuiet()オプションを使用する必要があると常に信じてきました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。実行してgrepも存在-qしないfile場合は、インクルードの一致によって wrongfile「No such file」エラーが発生しても状態は終了します。filegrep0

関連情報