Bash OR演算子は複数の変数を評価しません。

Bash OR演算子は複数の変数を評価しません。

私のbashスクリプトの次の行は、複数のOR演算子を評価しません。最初の項目を確認して続行してください。

if [[ "${SERVER_NAME}" != $BITBUCKET || $CONFLUENCE || $CROWD || $JIRA || $JENKINS ]]; then
other code here...
fi

bash -xスクリプトから私はこれを得ました。

+ [[ crowd.server.com != code.server.com ]]

以下は$BITBUCKET変数です。続行する前に、すべての変数を評価するために$SERVER_NAME必要です。crowd.server.com

ベストアンサー1

これは予想されます。演算子の1項 ||がと評価されると、シーケンスtrue全体の値はになりますtrue

演算子を使用して&&、比較したい文字列に基づいて文字列比較演算子を複数回使用してみてください。

より良い方法は、case次の文を使用することです。

case "${SERVER_NAME}" in
    "$BITBUCKET" | "$CONFLUENCE" | "$CROWD" | "$JIRA" | "$JENKINS") ;; # do nothing for these servers
    *)
    # your original code here...
    ;;
esac

おすすめ記事