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
$
ご覧のとおり、ここではプログラムを直接実行します。追加[]
またはは必要ありません[[]]
。