Accueil > Astuces OSXFAQ > Mardi - …Les Conditions Bash

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


Parlez de cette astuce dans le Learning Center forum (en anglais sur osxfaq.com)


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

Thierry Astuces OSXFAQ

  1. Pas encore de commentaire
  1. Pas encore de trackbacks
Vous devez être identifié pour poster un commentaire