« Programmation Bash/Tests » : différence entre les versions
Contenu supprimé Contenu ajouté
m Robot : ajoute Catégorie:Programmation bash-ksh (livre) |
|||
Ligne 1 :
== Conditions ==
Deux syntaxes équivalentes permettent de tester des expressions : <code>[ expression ]</code> et <code>test expression</code>. Elles renvoient toutes les deux un code de retour valant 0 si l'expression est vraie et 1 si l'expression est fausse.
<pre>
$ [ 2 = 2 ]
Ligne 31 ⟶ 18 :
1
</pre>
Les opérateurs de tests disponibles sont, pour les chaînes :
* <code>
* <code>
* <code>-n c</code>, vrai si c n'est pas la chaîne vide.
Pour les nombres :
* <code>
* <code>
* <code>n1 -le n2</code>, vrai si n1 est inférieur ou égal à n2 ;
* <code>
Pour les expressions :
* <code>! e</code>, vrai si e est faux ;
* <code>
* <code>e1 -o e2</code>, vrai si e1 ou e2 est vrai.
==
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>
[[Catégorie:Programmation
|