Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
Contributeurs, les sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
Comme aux chapitre précédent on retrouve les opérateurs de comparaison booléens de comparaison (==
, !=
, <
, >
, >=
, ⇐
, !
)
et des caractères de comparaisons relatifs aux commandes de tests.
Opérateur | Description |
---|---|
= | initialisation d'une constante numérique2) |
== | Comparaison d'un égalité |
!= | Comparaison d'une différence |
> | Comparaison de plus grand que |
>= | Comparaison de plus grand ou égal que |
< | Comparaison de plus petit que |
⇐ | Comparaison de plus petit ou égal que |
(( a = 23 )) # Initialiser une valeur, style C, avec des espaces des deux # côtés du signe "=". (("$a" < "$b")) (("$a" <= "$b")) (("$a" > "$b"))
(( nombre1 = 12 )) #puis (( nombre2 = 13 )) #puis (( "$nombre1" > "$nombre2" )) #puis echo $?
1
#!/bin/bash a=8 ; b=2 if (( "$a" < "$b" )) ; then echo " $a < $b " else echo "$a n'est pas inférieur à $b" fi
./mon-script ; echo $?
8 n'est pas inférieur à 2 0
Pour le code de retour 0 : voir utilisation de la commande exit dans les script
#!/bin/bash a=23 b=4 if (( "$a" < "$b" )) ; then echo "$a > $b" else echo "aïe : $a < $b ???" fi echo " " c="23" d="24" if test "$c" > "$d" ; then echo "Attention ! incohérence "$c" > "$d" car avec test et crochets, il s'agit de tests sur les chaînes de caractères." fi echo " " e="26" f="25" if [ "$e" > "$f" ] ; then echo "De même, Attention ! "$e" n'est pas plus grand que "$f" mais après "$f" selon l'ordre des caractères ASCII !!!" fi
Retour:
Remarquer l'incohérence :23 > 24
Il s'agit de tests sur les chaînes de caractères, donc il ne s'agit pas de plus petit
ou de plus grand, mais d'avant et après, selon l'ordre des caractèresASCII
.
De même, attention 26 n'est pas plus grand que 25 !
Mais 26 est après 25.
(pour comparer des nombres comme avec les booléens, mais avec la commande test ou crochets)
Caractère | |
---|---|
-eq | est égal à |
-ne | n'est pas égal à |
-gt | est plus grand que |
-ge | est plus grand ou égal à |
-lt | est plus petit que |
-le | est plus petit ou égal à |
[ "$a" -eq "$b" ] [ "$a" -ne "$b" ] ["$a" -gt "$b" ] [ "$a" -ge "$b" ] [ "$a" -lt "$b" ] [ "$a" -le "$b" ]
test "$a" -eq "$b" test "$a" -ne "$b" test "$a" -gt "$b" test "$a" -ge "$b" test "$a" -lt "$b" test "$a" -le "$b"
[ 25 -eq 20 ] #puis echo $?
1
var1=17 var2=18 [ "$var1" -gt "$var2" ] echo $?
test 100 -gt 99 && echo "vrai" || echo "faux" # retour : vrai
test 100 -lt 99 && echo "vrai" || echo "faux" # retour : faux
[ "LEbash" = "Labash" ]; echo $?
1 # car l'expression est fausse
[ 5 -eq 5 ]; echo $?
0 # car l'expression est vraie
test 17 -gt 11 ; echo $?
0
De même :
var1=17 ; var2=11 ; test "$var1" -gt "$var2" ; echo $?
0
#!/bin/bash a=2 ; b=1 if [ "$a" -gt "$b" ] ; then echo "$a est plus grand que $b" fi
./mon-script :
2 est plus grand que 1
if test 100 -gt 99 then echo "vrai" #réponse : vrai else echo "faux" fi
./mon-script
vrai
#!/bin/bash var1=8 var2=7 if test "$e" -gt "$f" ; then echo " $var1 est plus grand que $var2 " fi echo " " if test 8 -gt 7 ; then echo " $var1 est plus grand que $var2 " fi
./mon-script
: ligne 18 : test: : nombre entier attendu comme expression 8 est plus grand que 7
$ test -f /etc/gaga
Ou
$ [ -f /etc/gaga ]
(Si le fichier /etc/gaga existait, le code de retour serait 0.
Voir la commande exit et son utilisation dans les scripts.)
soit les doubles PARENTHÈSES avec les opérateurs booléens :
== != < > >= <=
soit les CROCHETS (ou la commande “test”) avec les opérateurs :
-eq -ne -gt -ge -lt -le
Opérateur | Signification |
---|---|
! | Négation |
-a | ET |
-o | OU |
! -a -o
\(........\)
Le fichier “toto” n'est pas un répertoire :
[ ! -d /etc/group ]
echo $?
0
Il est vrai (retour 0) que ce “n'est pas”
Le fichier mon-script existe et est exécutable :
[ -f mon-script -a -x mon-script ]
echo $?
0