if else
3つのブール変数を使用するbashスクリプトを作成しようとしています。
CHECK_X
CHECK_Y
CHECK_Z
もしそうでなければCHECK_X
CHECK_Y
間違ったそしてまたCHECK_Z
、間違った次に、条件が満たされていないことをユーザーに通知します。だから、次のようにしました。
if [[ "$CHECKX" || "$CHECKY" == "FALSE" ]] && [[ "$CHECKZ" == "FALSE" ]]; then
echo "Condition not met"
fi
上記のコードを使用して、CHECK_X
またはCHECK_Y
正しい場合CHECK_Z
でも間違ったこのようなことが続くなら、私が望むのはこれではありません。
私はこれらのうちの1つが必要CHECK_X
です。CHECK_Z
本物それともCHECK_Y
CHECK_Z
本物私の条件が満たされるまで。
次のコードを使用しても機能しません。
if [[ "$CHECK_X" && "$CHECK_Z" == "FALSE" ]] || [[ "$CHECK_Y" && "$DCHECK_Z" == "FALSE" ]]; then
echo "Condition not met"
fi
どこか複雑すぎると思うし、専門家のアドバイスが必要です。ありがとう
修正する:
最近のフィードバックに基づいて、コードを次のように更新しました。
if [[ "$CHECK_X" == "FALSE" || "$CHECK_Y" == "FALSE" ]] && [[ "$CHECK_Z" == "FALSE" ]]; then
echo "Condition not met"
fi
しかし、テスト後、私は次のようなものを得ました...
場合:
CHECK_X="TRUE"
CHECK_Y="FALSE"
CHECK_Z="TRUE"
出力: Condition not met
。これは間違った条件のため1そしてサムはいTRUE
。
場合:
CHECK_X="TRUE"
CHECK_Y="FALSE"
CHECK_Z="FALSE"
出力: Condition not met
。これは正しい条件のため1そしてサムみんないいえ TRUE
。
場合:
CHECK_X="FALSE"
CHECK_Y="TRUE"
CHECK_Z="FALSE"
出力:スクリプトが完了しました。これは間違った条件のため2そしてサムはいいいえ TRUE
。
場合:
CHECK_X="FALSE"
CHECK_Y="TRUE"
CHECK_Z="TRUE"
出力:スクリプトが完了しました。これは正しい条件のため2そしてサムはいTRUE
。
場合:
CHECK_X="FALSE"
CHECK_Y="FALSE"
CHECK_Z="FALSE"
出力: Condition not met
。これは正しい条件のため1そしてサムまたは2そしてサムはいいいえ TRUE
。
ベストアンサー1
各変数を確認する必要があります。
if [[ "$CHECKX" == "FALSE" || "$CHECKY" == "FALSE" ]] && [[ "$CHECKZ" == "FALSE" ]]; then
echo "Condition not met"
fi
時々、これは設定されていることをif [[ "$CHECKX" || "$CHECKY" == "FALSE" ]]
確認し、文字列と比較します。表示するには:$CHECKX
$CHECKY
FALSE
$ CHECKX=foo
$ CHECKY=TRUE
$ [[ "$CHECKX" || "$CHECKY" == "FALSE" ]] && echo true
true
$ CHECKX=""
$ [[ "$CHECKX" || "$CHECKY" == "FALSE" ]] && echo true
$
上記のように、空の文字列に設定されている場合にのみ検査が失敗するため、CHECKX
テストは[[ "$CHECKX" ]]
falseと評価されます。以下を含む任意の値に設定されている場合0
:
$ CHECKX=0
$ [[ "$CHECKX" || "$CHECKY" == "FALSE" ]] && echo true
true