私は次のコードにAND、OR条件文の
elif [ $text2 == 'LANDING' ] && [ "$text4" == 'FAIL' ] || [ "$text4" == '' ]; then
を持っている場合には条件は、テキスト2が着陸しなければならないとtext4が失敗またはnullことができるのいずれかです。 上記のコマンドを評価する方法。
Imが一緒に事前
私は次のコードにAND、OR条件文の
elif [ $text2 == 'LANDING' ] && [ "$text4" == 'FAIL' ] || [ "$text4" == '' ]; then
を持っている場合には条件は、テキスト2が着陸しなければならないとtext4が失敗またはnullことができるのいずれかです。 上記のコマンドを評価する方法。
Imが一緒に事前
あなたが明示的にグループにそれらを必要とする:
elif [ "$text2" = 'LANDING' ] &&
{ [ "$text4" = 'FAIL' ] || [ "$text4" = '' ]; }; then
あなたの試みでしょう次の2つの条件のいずれかが成立した場合:
text2
土地およびtext4
は、FAILtext4
は空または設定されていませんでした。&&
と||
が同じ優先順位を持っているので、あなたは(おそらく驚くほど)、グループ化せずにそれを書くことができます:
elif [ "$text4" = '' ] || [ "$text4" = FAIL ] && [ $text2 == 'LANDING' ]; then
あなたがbash
を使用している場合は、代わりに[ ... ]
の[[ ... ]]
コマンドを使用することができます。グループ分けは必須です。 [[ ... ]]
doの演算子は、他の言語よりも優先されます(つまり、a || b && c
はa || (b && c)
で、(a || b) && c
ではありません)。
elif [[ $text2 == 'LANDING' && ("$text4" == 'FAIL' || "$text4" == '') ]]; then
使用グループに中括弧や括弧||
オペランドのいずれかの間違った 感謝をしている場合は助けてください。括弧はよりよく見えますが、非効率なサブシェルが作成されるため、中括弧は醜いにもかかわらず移動する方法です。
elif [ $text2 == 'LANDING' ] && { [ "$text4" == 'FAIL' ] || [ "$text4" == '' ]; }; then
中括弧には余分なセミコロンが必要です。また
、あなたが少しきれいにするためにできるように二重の角括弧を使用することができますbashのを使用している場合:
elif [[ $text2 == 'LANDING' && ("$text4" == 'FAIL' || "$text4" == '') ]]; then
特にお勧めしますが、bashので、あなたが[[...]]
elif [[ $text2 == 'LANDING' && $text4 == @(FAIL|) ]]; then
で拡張グロブパターンを使用できるわけではありません