« Programmation Bash/Tests » : différence entre les versions
+ coloration |
|||
Ligne 1 : | Ligne 1 : | ||
== Conditions == |
== 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. |
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. |
||
<source lang="bash"> |
|||
<pre> |
|||
$ [ 2 = 2 ] |
$ [ 2 = 2 ] |
||
$ echo $? |
$ echo $? |
||
Ligne 8 : | Ligne 8 : | ||
$ echo $? |
$ echo $? |
||
1 |
1 |
||
</source> |
|||
</pre> |
|||
La commande <code>test</code> fonctionne de manière complétement équivalente : |
La commande <code>test</code> fonctionne de manière complétement équivalente : |
||
<source lang="bash"> |
|||
<pre> |
|||
$ test 2 = 2 |
$ test 2 = 2 |
||
$ echo $? |
$ echo $? |
||
Ligne 21 : | Ligne 17 : | ||
$ echo $? |
$ echo $? |
||
1 |
1 |
||
</ |
</source> |
||
Les opérateurs de tests disponibles sont, pour les chaînes : |
Les opérateurs de tests disponibles sont, pour les chaînes : |
||
* <code>c1 = c2</code>, vrai si c1 et c2 sont égaux ; |
* <code>c1 = c2</code>, vrai si c1 et c2 sont égaux ; |
||
Ligne 41 : | Ligne 37 : | ||
== Test <code>if</code> == |
== Test <code>if</code> == |
||
L'instruction <code>if</code> permet d'effectuer des opérations si une condition est réalisée. |
L'instruction <code>if</code> permet d'effectuer des opérations si une condition est réalisée. |
||
<source lang="bash"> |
|||
<pre> |
|||
if condition |
if condition |
||
then instruction(s) |
then instruction(s) |
||
fi |
fi |
||
</ |
</source> |
||
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. |
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. |
||
<source lang="bash"> |
|||
<pre> |
|||
if condition |
if condition |
||
then instruction(s) |
then instruction(s) |
||
else instruction(s) |
else instruction(s) |
||
fi |
fi |
||
</ |
</source> |
||
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 : |
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 : |
||
<source lang="bash"> |
|||
<pre> |
|||
if condition1 |
if condition1 |
||
then instruction(s) |
then instruction(s) |
||
Ligne 66 : | Ligne 62 : | ||
fi |
fi |
||
fi |
fi |
||
</ |
</source> |
||
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 : |
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 : |
||
<source lang="bash"> |
|||
<pre> |
|||
if condition1 |
if condition1 |
||
then instruction(s) |
then instruction(s) |
||
Ligne 76 : | Ligne 72 : | ||
... |
... |
||
fi |
fi |
||
</ |
</source> |
||
== Test <code>case</code> == |
== 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. |
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. |
||
<source lang="bash"> |
|||
<pre> |
|||
case valeur_testee in |
case valeur_testee in |
||
valeur1) instruction(s);; |
valeur1) instruction(s);; |
||
Ligne 87 : | Ligne 83 : | ||
... |
... |
||
esac |
esac |
||
</ |
</source> |
||
Ce code est équivalent à : |
Ce code est équivalent à : |
||
<source lang="bash"> |
|||
<pre> |
|||
if [ valeur_teste = valeur1 ] |
if [ valeur_teste = valeur1 ] |
||
then instruction(s) |
then instruction(s) |
||
Ligne 98 : | Ligne 94 : | ||
... |
... |
||
fi |
fi |
||
</ |
</source> |
||
[[Catégorie:Programmation bash-ksh (livre)]] |
[[Catégorie:Programmation bash-ksh (livre)]] |
Version du 7 février 2009 à 16:37
Conditions
Deux syntaxes équivalentes permettent de tester des expressions : [ expression ]
et test expression
. Elles renvoient toutes les deux un code de retour valant 0 si l'expression est vraie et 1 si l'expression est fausse.
$ [ 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
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.
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.
Pour les expressions :
! e
, vrai si e est faux ;e1 -a e2
, vrai si e1 et e2 sont vrais ;e1 -o e2
, vrai si e1 ou e2 est vrai.
Test if
L'instruction if
permet d'effectuer des opérations si une condition est réalisée.
if condition
then instruction(s)
fi
L'instruction if
peut aussi inclure une instruction else permettant d'exécuter des instructions dans le cas ou la condition n'est pas réalisée.
if condition
then instruction(s)
else instruction(s)
fi
Il est bien sur possible d'immbriquer des if
dans d'autres if
et notamment des constructions telles que celle ci sont assez courantes :
if condition1
then instruction(s)
else
if condition2
then instruction(s)
else
if condition3
...
fi
fi
fi
Pour permettre d'alléger ce type de code, ksh fournit un raccourci d'écriture : elif
. Le code précédent pourrait être réécrit ainsi :
if condition1
then instruction(s)
elif condition2
then instruction(s)
elif condition3
...
fi
Test case
L'instruction case
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.
case valeur_testee in
valeur1) instruction(s);;
valeur2) instruction(s);;
valeur3) instruction(s);;
...
esac
Ce code est équivalent à :
if [ valeur_teste = valeur1 ]
then instruction(s)
elif [ valeur_testee = valeur2 ]
then instruction(s)
elif [ valeur_testee = valeur3 ]
then instruction(s)
...
fi