De bonnes réponses et une leçon précieuse;) Je veux seulement compléter avec une note.
Le type de test que l'on choisit d'utiliser dépend fortement du code, de la structure, de l'environnement, etc.
Une alternative pourrait être d'utiliser un commutateur ou une case
instruction comme dans:
case "$PHONE_TYPE" in
"NORTEL"|"NEC"|"CISCO")
echo "OK"
;;
*)
echo "Phone type must be nortel,cisco or nec"
;;
esac
En deuxième lieu, vous devez faire attention en utilisant des noms de variables en majuscule. Cela permet d'éviter les collisions entre les variables introduites par le système, qui sont presque toujours toutes en majuscules. Ainsi $phone_type
au lieu de $PHONE_TYPE
.
Bien que celui-ci soit sans danger, si vous avez pour habitude d'utiliser des majuscules, vous pourriez le dire un jour IFS="boo"
et vous serez dans un monde de souffrance.
Cela facilitera également le repérage de ce qui est quoi.
Pas une obligation mais une serait fortement envisager.
C'est probablement aussi un bon candidat pour une fonction. Cela rend le code plus facile à lire et à maintenir. Par exemple:
valid_phone_type()
{
case "$1" in
"NORTEL"|"NEC")
return 0;;
*)
echo "Model $1 is not supported"
return 1;;
esac
}
if ! valid_phone_type "$phone_type"; then
echo "Bye."
exit 1
fi
if [[ ! $PHONE_TYPE =~ ^(NORTEL|NEC|CISCO)$ ]]; then