Je voudrais avoir la logique non pour l'expression de condition suivante dans bash, comment puis-je faire cela?
if [[ $var==2 || $var==30 || $var==50 ]] ; then
do something
fi
comment puis-je ajouter le logique pas directement dans l'expression ci-dessus, il est très fastidieux de le changer à nouveau en des choses comme ceci:
if [[ $var!=2 && $var!=30 && $var==50 ]] ; then
do something
fi
merci pour tous les indices!
if ! [[ $var == 2 || $var == 30 || $var == 50 ]] ; then
do something
fi
Ou:
if [[ ! ($var == 2 || $var == 30 || $var == 50) ]] ; then
do something
fi
Et une bonne pratique est d'avoir des espaces entre vos opérateurs conditionnels et vos opérandes.
Certains pourraient également suggérer que si vous comparez simplement des nombres, utilisez plutôt un opérateur arithmétique ou utilisez simplement (( ))
:
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
Bien que ce ne soit pas louable, il faut être prudent si $var
peut parfois ne pas être numérique ou n'a pas de valeur ou n'est pas défini, car cela peut signifier 0 comme valeur par défaut ou une autre valeur d'une autre variable s'il s'agit du nom d'une variable.