BASH: $1 位置の OR 演算子

BASH: $1 位置の OR 演算子

OR演算子が$ 1で機能しないという問題があります。たとえば、

if [[ "$1" != '1' || '2' ]]
        then
               echo "BAD"
        else
               echo "OK"
        fi

このテストを実行すると、$1が何であれ常にBADが発生します。

1ドルを1または2でどのように結び付けることができますか?

ベストアンサー1

標準sh構文の使用(したがって、bash他のすべてのPOSIX互換シェルで認識されます):

case $1 in
  (1 | 2) echo OK;;
  (*) echo BAD;;
esac

または:

if [ "$1" = 1 ] || [ "$1" = 2 ]; then
  echo OK
else
  echo BAD
fi

(これは文字列のバイト間比較です1

コンストラクタ=(コピー)の/演算子は、実際には等価演算子ではなく、パターン一致演算子です。したがって、この特別な場合に単一の文字を一致させたい場合は、その項目で使用されている標準構文のようにこれを行うこともできます。方法。!=bash[[...]]ksh[[ $1 != [12] ]]case $1 in ([12])sh

おすすめ記事