bash では、「ファイルに XYZ が含まれていない場合」と言いたいと思います。これをコードに置き換える最も自然な方法は、次のようなものです。
if [ ! grep --quiet XYZ "$MyFile" ] ; then
... do things ...
fi
しかしもちろん、これは有効な Bash 構文ではありません。バッククォートを使用することもできますが、その場合はファイルの出力をテストします。私が考えることができる2つの選択肢は次のとおりです。
grep --quiet XYZ "$MyFile"
if [ $? -ne 0 ]; then
... do things ...
fi
と
grep --quiet XYZ "$MyFile" ||
( ... do things ...
)
私はどちらかというと 2 番目の方が好きです。より Lisp であり、|| です。制御フローは、スクリプト言語ではそれほど珍しいことではありません。最初の行の引数も見ることができますが、最初の行を読んだ人は、なぜgrep を実行しているのかわかりません。スクリプトで分岐します。
if
ステートメントを使用grep
し、条件内にある 3 番目のより直接的な方法はありますか?