Conditions
Dans UNIX, chaque commande émet un statut en sortant :
Une valeur de 0 veut dire que la commande est terminé avec succès
Une valeur supérieur à 0 veut dire une erreur
On peut à tout moment récupérer le statut de la dernier commande effectuée avec la variable $?
:
Par exemple :
Dans l'exemple, on voit le statut de 0 après la commande echo
. En revanche, la commande cat
a crée une erreur, et donc il y avait 1 dans $?
.
On pourrait donc faire de la logique dans nos scripts basé sur le statut des commandes.
Une commande spéciale qui s'appelle test
permet d'évaluer des conditions, et émettre le bon statut selon le résultat de l'évaluation :
Si la condition passe,
test
se termine avec succès en mettant 0 dans la variable$?
Si la condition ne passe pas,
test
se termine avec erreur, en mettant 1 dans la variable$?
Essayez vous-même :
Avec test
on peut donc formuler une condition :
La formulation de la commande if
et donc :
Attention au point-virgule après la commande, et les mots-clés
then
etfi
!
Options de test
test
La commande test
permet de tester un grand nombre de conditions :
A tout moment, on peut inverser la logique avec le symbole !
.
Par exemple, si un fichier de nom abc.txt
n'existe pas :
Formulation de test
avec les crochets
test
avec les crochetsUne autre formulation de la commande test
existe, qui est parfois plus lisible pour un développeur, en utilisant les crochets [
et ]
:
Exercice
Rédigez un script bouncer.sh
qui aide un contrôleur d'une boîte de nuit à calculer l'age d'entrée des visiteurs.
Si un visiteur à moins que 23 ans, il/elle ne pourra pas entrer.
Le script doit demander l'année de naissance du visiteur, et émettre :
Bienvenue ! Amusez vous bien !
Non-autorisé, il faut attendre X ans avant de rentrer.
Dernière mise à jour