« Programmation Bash/Tests » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Shadopok (discussion | contributions)
Shadopok (discussion | contributions)
Aucun résumé des modifications
Ligne 69 : Ligne 69 :
vrai si e1 ou e2 est vrai. -o ou le ou lgogique.
vrai si e1 ou e2 est vrai. -o ou le ou lgogique.


== Test <code>if</code> ==
L'instruction <code>if</code> permet d'effectuer des opérations si une condition est réalisée.
<pre>
if condition
then instruction(s)
fi
</pre>
L'instruction <code>if</code> peut aussi inclure une instruction else permettant d'exécuter des instructions dans le cas ou la condition n'est pas réalisée.
<pre>
if condition
then instruction(s)
else instruction(s)
fi
</pre>
Il est bien sur possible d'immbriquer des <code>if</code> dans d'autres <code>if</code> et notamment des constructions telles que celle ci sont assez courantes :
<pre>
if condition1
then instruction(s)
else
if condition2
then instruction(s)
else
if condition3
...
fi
fi
fi
</pre>
Pour permettre d'alléger ce type de code, ksh fournit un raccourci d'écriture : <code>elif</code>. Le code précédent pourrait être réécrit ainsi :
<pre>
if condition1
then instruction(s)
elif condition2
then instruction(s)
elif condition3
...
fi
</pre>




== Test <code>case</code> ==
L'instruction <code>case</code> permet de comparer une valeur avec une liste d'autres valeurs et d'exécuter un bloc d'instructions lorsque une des valeurs de la liste correpsond.
<pre>
case valeur_testee in
valeur1) instruction(s);;
valeur2) instruction(s);;
valeur3) instruction(s);;
...
esac
</pre>
Ce code est équivalent à :
<pre>
if [ valeur_teste = valeur1 ]
then instruction(s)
elif [ valeur_testee = valeur2 ]
then instruction(s)
elif [ valeur_testee = valeur3 ]
then instruction(s)
...
fi
</pre>
'''Texte gras'''


[[Catégorie:Programmation Bash (livre)]]
[[Catégorie:Programmation Bash (livre)]]

Version du 5 mars 2007 à 15:44

Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « modifier »).

Ressources suggérées : Aucune (vous pouvez indiquer les ressources que vous suggérez qui pourraient aider d'autres personnes à compléter cette page dans le paramètre « ressources » du modèle? engendrant ce cadre)

Syntaxe du test

Deux syntaxes équivalentes permettent de tester des expressions :

[ expression ]

ou

test expression


Ces deux commandes renvoient un code de retour valant 0 si l'expression est vraie et 1 si l'expression est fausse. Exemple :

$ [ 2 = 2 ]
$ echo $?
0
$ [ 2 = 3 ]
$ echo $?
1

La commande test fonctionne de manière complétement équivalente :

$ test 2 = 2
$ echo $?
0
$ test 2 = 3
$ echo $?
1

Tests sur les chaînes de caractères

Les opérateurs de tests disponibles sont, pour les chaînes :

  • [ c1 = c2 ]
vrai si c1 et c2 sont égaux,
  • [ c1 != c2 ]
vrai si c1 et c2 sont différents,
  • [ -z c ]
vrai si c est la chaîne vide,
  • [ -n c ]
vrai si c n'est pas la chaîne vide.

Tests sur les nombres

Pour les nombres :

  • [ n1 -eq n2 ]
vrai si n1 et n2 sont égaux,
  • [ n1 -ne n2 ]
vrai si n1 et n2 sont différents,
  • [ n1 -lt n2 ]
vrai si n1 est strictement inférieur à n2,
  • [ n1 -le n2 ]
vrai si n1 est inférieur ou égal à n2,
  • [ n1 -gt n2 ]
vrai si n1 est strictement supérieur à n2,
  • [ n1 -ge n2 ]
vrai si n1 est supérieur ou égal à n2.

Tests et logique

Ou comment introduire une alternative logique :

  • [ ! e ]
vrai si e est faux. ! est la négation.
  • [ e1 -a e2 ]
vrai si e1 et e2 sont vrais. -a ou le et logique.
  • [ e1 -o e2 ]
vrai si e1 ou e2 est vrai. -o ou le ou lgogique.