不等演算子を使用した文字列の比較

不等演算子を使用した文字列の比較

PHONE_TYPE変数に3つの有効な値のいずれかが含まれていることを確認したいと思います。

if [ "$PHONE_TYPE" != "NORTEL" ] || [ "$PHONE_TYPE" != "NEC" ] ||
   [ "$PHONE_TYPE" != "CISCO" ]
then
    echo "Phone type must be nortel,cisco or nec"
    exit
fi

上記のコードは私には適していないので、次のように試しました。

if [ "$PHONE_TYPE" == "NORTEL" ] || [ "$PHONE_TYPE" == "NEC" ] ||
   [ "$PHONE_TYPE" == "CISCO" ]
then
    :        # do nothing
else
    echo "Phone type must be nortel,cisco or nec"
    exit
fi

この種のタスクを実行するためのよりきれいな方法はありますか?

ベストアンサー1

私はあなたが探していると思います:

if [ "$PHONE_TYPE" != "NORTEL" ] && [ "$PHONE_TYPE" != "NEC" ] &&
   [ "$PHONE_TYPE" != "CISCO" ]

これらの等価物の規則を次のように呼びます。ドモーガンの法則あなたの場合は、次のことを意味します。

not(A || B || C) => not(A) && not(B) && not (C)

ブール演算子またはand andの変更を確認してください。

そしてあなたはこれをやろうとしています:

not(A || B || C) => not(A) || not(B) || not(C)

これは明らかに動作しません。

おすすめ記事