シェルスクリプトで指定文字列がファイルに含まれるかを確認したい

シェルスクリプトで指定文字列がファイルに含まれるかを確認したい場合はgrepコマンドの終了ステータスを確認する。

#!/bin/bash

grep 検索文字列 ファイル名
if [ $? -eq 0 ]; then
  echo "検索文字列が見つかりました"
fi

これを実行するとgrepで引っかかった行が標準出力に出力されるので煩わしい。

標準出力に出さない-qオプション

grepコマンドの-qオプションを使用すると検索結果を標準出力に出さない。

#!/bin/bash

grep -q 検索文字列 ファイル名
if [ $? -eq 0 ]; then
  echo "検索文字列が見つかりました"
fi

標準出力を/dev/nullに流す

grepコマンドの標準出力を/dev/nullに流す方法もある。

#!/bin/bash

grep 検索文字列 ファイル名 > /dev/null
if [ $? -eq 0 ]; then
  echo "検索文字列が見つかりました"
fi

if の条件で直接 grep

ifの条件で直接grepを使用する方法もある。

#!/bin/bash

if grep -q 検索文字列 ファイル名; then
  echo "検索文字列が見つかりました"
fi
#!/bin/bash

if grep 検索文字列 ファイル名 > /dev/null; then
  echo "検索文字列が見つかりました"
fi

読みやすい方を使う。