Bashのスクリプト文の評価順序は何ですか?

Bashのスクリプト文の評価順序は何ですか?

左から右へ?あるいはその逆も?

例:

If [! -z "$ foo"] && [$ foo2 -eq 0]; then
    echo "something"
fi

どの評価を最初にすべきですか?

[! -z "$ foo"]

または

[$ foo2 -eq 0]

ありがとうございます!

ベストアンサー1

シェルスクリプトでは、次のように言います。

if [ ! -z "$foo" ] && [ "$foo2" -eq 0 ]; then
    echo 'something'
fi

最初のテスト[ ! -z "$foo" ](可能な限り作成[ -n "$foo" ])が最初に実行されます。 2回目のテストはただ最初のテストが成功すると実行されます。もし両方テストが成功します。つまり、$foo値がnullではなく、$foo2算術値が0の場合にecho実行されます。

この&&演算子は、他の言語の同様の演算子のように動作します。シェルの実装段落評価&&左側が次の場合、右側のみが評価されます。本物

このif特定の文は、次のようにキーワードを使用せずに作成することもできますif

[ ! -z "$foo" ] && [ "$foo2" -eq 0 ] && echo 'something'

if ...; then ...; fiIMHOを使用する方が明確ですが。

繰り返しますが、これはecho次の場合にのみ実行されます。両方以前のテストは成功しました。

おすすめ記事