Bashを使用してファイルに特定の文字列が含まれているかどうかを確認する方法 質問する

Bashを使用してファイルに特定の文字列が含まれているかどうかを確認する方法 質問する

bash でファイルに特定の文字列が含まれているかどうかを確認したいのですが、このスクリプトを使用しましたが、機能しません。

 if [[ 'grep 'SomeString' $File' ]];then
   # Some Actions
 fi

私のコードの何が間違っているのでしょうか?

ベストアンサー1

if grep -q SomeString "$File"; then
  Some Actions # SomeString was found
fi

ここでは必要ありません[[ ]]。コマンドを直接実行してください。-q見つかったときに表示される文字列が必要ない場合はオプションを追加してください。

コマンドgrepは、検索結果に応じて終了コードに 0 または 1 を返します。何かが見つかった場合は 0、それ以外の場合は 1 です。

$ echo hello | grep hi ; echo $?
1
$ echo hello | grep he ; echo $?
hello
0
$ echo hello | grep -q he ; echo $?
0

の条件としてコマンドを指定できますif。コマンドが終了コードで 0 を返す場合、条件は true であることを意味します。それ以外の場合は false です。

$ if /bin/true; then echo that is true; fi
that is true
$ if /bin/false; then echo that is true; fi
$

ご覧のとおり、ここではプログラムを直接実行します。追加[]またはは必要ありません[[]]

おすすめ記事