ifステートメントでの&&演算子の使用


84

私には3つの変数があります:

VAR1="file1"
VAR2="file2"
VAR3="file3"

次の&&ようなifステートメントでand()演算子を使用する方法:

if [ -f $VAR1 && -f $VAR2 && -f $VAR3 ]
   then ...
fi

このコードを書くとエラーが発生します。正しい方法は何ですか?

回答:


172

したがって、表現を機能させる&&-aは、に変更することでうまくいきます。

それはこのように正しいです:

 if [ -f $VAR1 ] && [ -f $VAR2 ] && [ -f $VAR3 ]
 then  ....

または好き

 if [[ -f $VAR1 && -f $VAR2 && -f $VAR3 ]]
 then  ....

あるいは

 if [ -f $VAR1 -a -f $VAR2 -a -f $VAR3 ]
 then  ....

あなたはこの質問で詳細を見つけることができますbashのを:複数の単項演算子if文で、いくつかの参照は次のようにそこに与えられ、テストの間の差である[とは何[[?


14
注意POSIXはの使用をお勧めします&&と、||上の単一のブラケット記法とを-aし、-oあなたが必要な場合は、それが読み厄介とハード取得することができ、特に以来、あなたが最初の表記のためのポータブルコード、外出先を書いている場合は、それ以外の場合は第二と第三のスキップ式をグループ化します。
エイドリアンFrühwirth
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.