Souvent dans un script, on a besoin de faire des tests sur des variables
A=1
B=2
test $A -eq $B on peut l'écrire sous la forme [ "$a" -eq "$b" ] , on verifie que $A est egale à $B
echo $? renvoie le résultat de la commande ci-dessus, dans ce cas 1 car $A n'est pas égal à $B
La variable $? renvoie le résultat de la commande précédente sous la forme 0 ( c'est vrai ou la commande s'est bien passé ) ou 1 ( c'est faux ou il ya une erreur )
A=1 ; B=1
[ "$A" -eq "$B" ]
OK="$?"
echo $OK renvoie le résultat de la commande ci-dessus, dans ce cas 0
Sur les nombres :
"$A" -eq "$B" | est égal à |
"$A" -ne "$B" | n'est pas égal à |
"$A" -gt "$B" | est plus grand que |
"$A" -ge "$B" | est plus grand ou égal à |
"$A" -lt "$B" | est plus petit que |
"$A" -le "$B" | est plus petit ou égal à |
Sur les variables
"$A" == "$B" | est égal |
"$A" != "$B" | est différent |
-e "$A"" | existe |
-n "$A" | contient quelque-chose |
-z "$A" | ne contient rien |
-f "$A" | est un document |
-d "$A" | est un repertoire |
Il existe d'autre comparateur de fichier
If ..... then ..... fi :
On compare deux variables differentes#!/bin/bash A=2 B=3 if [ "$A" -le "$B" ] # si $A est inférieur à $B then echo "$A est plus petit que $B" # alors on fait .... fi # fin |
Autre exemple :
#!/bin/bash |
On cumule les tests
#!/bin/bash read A read B C=6 if [ "$A" -le "$B" -a "$C" -eq 6 ] ; then echo "$A est plus petit que $B et C est égale à $C" fi |
Pour afficher le résultat il faut que a soit plus petit que b et que c soit égale a 6 .
Dans une fonction test, "-a" signifie ET et "-o" signifie OU
case ..... in :
Le script suivant s'utilise de cet façon : ./lenomduscrit 1 ( ou 3 ou n'importe quoi )
#!/bin/bash case $1 in # dans le cas ou $1 est égale à 1) # 1 echo "la variable a est égale à $1" # on affiche .... ;; # fin du cas ou $1 est égale à 1 2 | 3 | 5 ) # 2 ou 3 ou 4 ou 5 echo "la variable a supérieure à 1" ;; *) # dans tout les autres cas echo " Moi pas comprendre" ;; esac # fin du test case exit 0 # sortie si tout s'est bien passé |
La variable $1 correspond à ce que l'on a mis en argument au script.c'est a dire 1 ou 3, s'il y avait deux arguments alors la variable $2 existerait aussi, et ainsi de suite.
Attention au delà de la dizaine il faut utiliser la commande shift.