20

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 番目のより直接的な方法はありますか?

4

3 に答える 3