
私は次のような単純な表現しかできません1=1 and 0=1
test 1 = 1 -a 0 = 1
しかし、次のような複雑な式はどのように行うのでしょうか1=1 and (0=1 or 1=1)
?
答え1
複数のテスト呼び出しを使用します:
test 1 = 1 && test 0 = 1 -o 1 = 1
または [[:
[[ 1 = 1 && (0 = 1 || 1 = 1) ]]
答え2
test
または[
...を使用することもできます]
が、括弧をエスケープする必要があり、用語をスペースで区切る必要があることに留意してください。
if [ \( a = a \) -a \( a = b -o b = b \) ]
then echo Yes
else echo No
fi
それは私にとっては「はい」です。ただし、通常は代わりに Bash および Korn シェルの[[
...]]
演算子を使用する方が簡単です。それほど多くのエスケープを行う必要はありません。
答え3
質問にはすでに回答されていますが、検討できる(あるいは却下できるかもしれない)スタイルのヒントがいくつかあります:
あなたがそれを書いている人で、それがわかりにくいと感じている場合は、次のことを行ってください。
- 必要でなくても () を追加して使用すると、より明確になる可能性があります。
- また、多数の and ステートメントの代わりにネストされたループを使用することもできます。
答え4
Florian は上でほぼ正しいですが、bash には算術展開もあり、変数を比較するときに少し便利であることに留意してください。
見るここ詳細については。