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érique (ne pas confondre avec = de l'affectation de variable qui n'a pas d'espace autour de lui) |
== | 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 $?
retour :
1
#!/bin/bash a=23 ; b=2 if (( "$a" < "$b" )) ; then echo " " fi echo "$a n'est pas inférieur à $b"
./mon-script ; echo $?
Remarquez bien le retour suivant, c' est celui de l'exécution de la dernière commande (echo) du script :
23 n'est pas inférieur à 2 0
Voir utilisation de la commande exit dans les script
a=23 b=2 if (( "$a" > "$b" )) ; then echo "$a > $b" fi echo " " c="23" d="24" if test "$a" > "$b" ; then echo "Attention ! incohérence "$c" > "$d" car avec test et crochets, il doit s'agir de chaînes de caractères." fi echo " " e="26" f="25" if [ "$a" > "$b" ] ; then echo "De même, Attention ! incohérence "$e" > "$f" car avec test et crochets, il s'agit exclusivement de chaînes de caractères." fi
Retour:
23 > 2 Attention ! incohérence 23 > 24 car avec test et crochets, il s'agit exclusivement de chaînes de caractères. De même, Attention ! incohérence 26 > 25 car avec test et crochets, il s'agit exclusivement de chaînes de caractères.
(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 $?
retour:
0
De même :
var1=17 ; var2=11 ; test "$var1" -gt "$var2" ; echo $?
retour :
0
#!/bin/bash a=2 ; b=1 if [ "$a" -gt "$b" ] ; then echo "$a est plus grand que $b" fi
retour de ./mon-script :
2 est plus grand que 1
if test 100 -gt 99 then echo "vrai" #réponse : vrai else echo "faux" fi
retour de ./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
retour de ./mon-script :
: ligne 18 : test: : nombre entier attendu comme expression 8 est plus grand que 7
test expression ou bien [ expression ] $ test -f /etc/gaga $ [ -f /etc/gaga ] $ echo $? $ echo $? 1 1 $ $
(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
Le fichier mon-script existe et est exécutable :
[ -f mon-script -a -x mon-script ] echo $? 0