Mardi - …Les Conditions Bash
Bash est doté de l’opérateur arithmétique très utile $((…)). Se reporter au Jeudi de la Semaine 82..
$ echo $((2+7))
9
$ $( ((2>7)) )
$ echo $?
1
$ $( ((2<7)) )
$ echo $?
0
Pour interprtêter le résultat des deux conditions, en langage shell 0 représente TRUE (vrai) et 1 représente FALSE (faux).
La construction évalue les expressions et les expressions relationnelles. Elle peut aussi prendre des $variables tout comme des valeurs litérales telles que 7.
Essayez ceci :
$ if $((2<7)); then echo "Yes"; else echo "No"; fi
bash: 1: command not found
No
So why ‘1: command not found’?
Une erreur commune consiste à utiliser $((…)) dans une condition. $ exécute effectivement l’expression pour retourner la valeur (1), mais l’instruction ‘if’ le fait aussi. Une instruction ‘if’ exécute la commande qui la suit immediatement (souvent ‘[ ... ]‘), et essaies donc d’exécuter ‘1′ (pourquoi retourne t’elle 1 et pas 0 alors ?) renvoyé par l’évaluation de ‘2<7'.
Enlever le $:
$ if ((2<7)); then echo "Yes"; else echo "No"; fi
Yes
Les exemples suivants sont plus compliqués mais fonctionnent aussi. Vous pouvez voir pourquoi ils fonctionnent si vous avez compris l’explication précédente.
$ if (($((2<7))==1)); then echo "Yes"; else echo "No"; fi
Yes
$ if [ $((2<7)) -eq 1 ]; then echo “Yes”; else echo “No”; fi
Yes
$ if [ $((7<2)) -eq 1 ]; then echo “Yes”; else echo “No”; fi
No
Si vous souhaitez en apprendre plus sur Mac OS X Unix visitez le Learning Center
cliquez ici.
- Pour les débutants : Le Tutoriel Mac OS X Unix
- Pour plus d’informations sur des sujets spécifiques : Mac OS X Advanced Unix
- Pour des réponses à des problèmes communs : Mac OS X How To
Chargement
Commentaires récents