回答:
のPOSIX準拠バージョンにgrep
は、-q
quiet用のスイッチがあります。
-q
Quiet. Nothing shall be written to the standard output, regardless
of matching lines. Exit with zero status if an input line is selected.
GNU grep(および場合によってはその他)では、長いオプションの同義語も使用できます。
-q, --quiet, --silent suppress all normal output
文字列が存在します:
$ echo "here" | grep -q "here"
$ echo $?
0
文字列が存在しません:
$ echo "here" | grep -q "not here"
$ echo $?
1
grep -q <pattern>
最後のプロセスを終了するための終了コードの即時チェック($?
)と組み合わせる必要があります。
これを使用して、たとえば次のようなコマンドを作成できます。
uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac
オプションで次のSTDERR
ように出力を抑制することができます:
grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
これはステートメントerror: 2
から出力されますcase
(読み取り権限がない/etc/shadow
か、ファイルが存在しないと仮定します)が、エラーメッセージはgrep
リダイレクトされる/dev/null
ため表示されません。
echo $?
場合、これは失敗しgrep
ます。