&&と||演算子の使用は混乱しています。

&&と||演算子の使用は混乱しています。

ファイルを見ていますが/etc/rc.d/init.d/sendmail(これはほとんど使用されていないことはわかりますが、テストを勉強しています)&&と演算子について||少し混乱しています。私は次の文に使用できることを読んだ。

if [ test1 ] && [ test2 ]; then
     echo "both tests are true"
elif [ test1 ] || [ test2 ]; then
     echo "one test is true"
fi

ただし、このスクリプトは次の1行ステートメントを表示します。

[ -z "$SMQUEUE" ] && SMQUEUE="QUEUE"
[ -f /usr/sbin/sendmail ] || exit 0

&&これはテストに基づいて応答を導き出すために、および演算子を使用しているように見えますが、||これらの演算子の特定の使用法に関する文書を見つけることはできません。この特定のケースで彼らが何をしているかを説明できる人はいますか?

ベストアンサー1

&&右側は、左側の終了ステータスが0(つまりtrue)の場合にのみ評価されます。||逆に、左側の終了状態がゼロでない場合(つまりfalse)、右側のみを評価します。

[ ... ]値を返すプログラムだと思います。内部テスト結果がtrueの場合は0を返し、そうでない場合は0以外の値を返します。

例:

$ false && echo howdy!

$ true && echo howdy!
howdy!
$ true || echo howdy!

$ false || echo howdy!
howdy!

追加の指示:

これにより、プログラムを指すことがwhich [わかります!ただし、通常、実際に実行されている内容を確認するためにスクリプト[では実行されません。type [プログラムを試すには、次のようにフルパスを指定します/bin/[ 1 = 1

おすすめ記事