Accueil > Astuces OSXFAQ > Lundi - …Les Conditions Shell

Lundi - …Les Conditions Shell

Cette semaine fait la lumière sur des problèmes communs que l’on peut rencontrer avec les scripts et les commandes shell en illustrant où se trouve le problème et comment le corriger.

Une commande appelée ‘test’, aussi connue en tant que ‘[', permet à qui conque de faire toute sorte de tests et de comparaisons impliquant des fichiers, des chaînes et des nombres.

Se reporter à la semaine 82 et à :

$ man test



ou



$ man [

On peut comparer des chaînes pour tester celle qui vient en premier d'un point de vue alphabétique :

$ if [ "aaa" > "zzz" ]; then echo “Yes”; else echo “No”; fi

Yes

Et pourquoi ‘Yes’ ? “aaa” n’est pas > “zzz”.

Le shell interprête ‘>’ comme un cacartère de redirection, il doit donc être échappé :

$ if [ "aaa" \\> "zzz" ]; then echo “Yes”; else echo “No”; fi

No

La première version aurait créer un fichier nommé “zzz”. Peut-être que si nous avions essayé l’exemple suivant en premier, cela nous aurait éclairé sur ce qui se serait passer.

$ if [ "zzz" < "aaa" ]; then echo “Yes”; else echo “No”; fi

bash: aaa: No such file or directory

No

Les guillemets peuvent aussi être utilisées pour échapper :

$ if [ "zzz" "<" "aaa" ]; then echo “Yes”; else echo “No”; fi

No

$ if [ "aaa" "<" "zzz" ]; then echo “Yes”; else echo “No”; fi

Yes

$

Essayons donc avec des nombres :

$ if [ 7 ">" 2 ]; then echo “Yes”; else echo “No”; fi

Yes

Comme prévu, mais qu’advient il avec cela :

$ if [ 17 ">" 2 ]; then echo “Yes”; else echo “No”; fi

No

L’opérateur ‘>’ fonctionne sur des chaînes (ou des nombres qui sont interprêtés comme des chaînes). Pour les comparaisons numériques il faut utiliser ‘-gt’ et ‘-lt’ :

$ if [ 17 -gt 2 ]; then echo “Yes”; else echo “No”; fi

Yes


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