1. ホーム
  2. linux

[解決済み] "grep -q" のポイントは?

2022-01-28 05:02:19

質問

grepのマニュアルページを読んでいて、-qオプションに出会いました。このオプションはgrepに"標準出力に何も書かないように指示します。エラーが検出された場合でも、一致するものがあれば、すぐにゼロステータスで終了します。

なぜこれが望ましい、あるいは有用な動作になるのか理解できない。標準入力から読み込み、処理し、標準出力に書き込むというのが目的のプログラムにおいて、なぜそれを完全に黙らせなければならないのでしょうか?

物を出力することが目的のプログラムを黙らせることが、どのような場合に役に立つのでしょうか?なぜ、エラーを完全に無視し、成功したリターンコードを強制的に出力したいと思うのでしょうか?

ありがとうございます。

解決方法は?

の終了ステータスは grep を示すとは限りません。 エラー  を表しています。 成功 または 失敗 . grep は、1行以上のマッチングを成功と定義しています。失敗とは、0行にマッチした場合を含みます。 または その他のエラーにより、マッチングがそもそも行われなかった。

-q は、どの行にマッチしたかを気にせず、ただ単に 一部 の行がマッチしました。

if grep -q foo file.txt; then
    echo "file.txt contains foo"
else
    echo "file.txt does not contain foo"
fi