167

シェル スクリプトを作成していて、コマンドの出力に特定の文字列が含まれているかどうかを確認しようとしています。おそらくgrepを使用する必要があると思いますが、方法がわかりません。誰か知っていますか?

4

5 に答える 5

203

テスト$?アンチパターンです。

if ./somecommand | grep -q 'string'; then
  echo "matched"
fi
于 2015-07-02T22:48:57.690 に答える
161

grep の戻り値をテストします。

./somecommand | grep 'string' &> /dev/null
if [ $? == 0 ]; then
   echo "matched"
fi

これは、次のように慣用的に行われます。

if ./somecommand | grep -q 'string'; then
   echo "matched"
fi

また:

./somecommand | grep -q 'string' && echo 'matched'
于 2013-06-05T03:55:15.717 に答える