Bashで次の条件式の論理否定を使用したいのですが、どうすればよいですか?
if [[ $var==2 || $var==30 || $var==50 ]] ; then
do something
fi
上記の式に直接ではなく論理を追加する方法を教えてください。これを次のように変更するのは非常に面倒です。
if [[ $var!=2 && $var!=30 && $var==50 ]] ; then
do something
fi
ヒントをありがとう!
if ! [[ $var == 2 || $var == 30 || $var == 50 ]] ; then
do something
fi
または:
if [[ ! ($var == 2 || $var == 30 || $var == 50) ]] ; then
do something
fi
また、条件付き演算子とオペランドの間にスペースを入れることをお勧めします。
数値を比較するだけの場合は、代わりに算術演算子を使用するか、単に(( ))
:
if ! [[ var -eq 2 || var -eq 30 || var -eq 50 ]] ; then
do something
fi
if ! (( var == 2 || var == 30 || var == 50 )) ; then
do something
fi
賛成ではありませんが、$var
は、数値ではない場合や値がない場合や設定されていない場合があります。これは、変数の名前である場合、デフォルトとして0を意味するか、別の変数の別の値を意味する可能性があるためです。