logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Ceci est une ancienne révision du document !


Bash : les opérateurs de comparaison numérique

RAPPEL DU PLAN DE LA SÉRIE :

1) Intro I : Bash : Introduction

2) chap II : Bash : Détail et caractères

3) chap III : Bash : les opérateurs lexicographiques

4) chap IV : C'est ici !

5) chap V : Bash : les symboles dans les calculs

6) chap VI : Bash : les tableaux

7) chap VII : Bash : les caractères de transformation de parametres

8) chap VIII : Bash : globs étendus et regex Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Opérateurs de comparaison numérique

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.

1) opérateurs booléens de comparaison numérique

Opérateur Description
== 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

syntaxe : utilisation des doubles parenthèses :

(( a = 23 ))  # Initialiser une valeur, style C, avec des espaces des deux
              # côtés du signe "=".

(("$a" < "$b"))

(("$a" <= "$b"))

(("$a" > "$b"))

exemple :

#!/bin/bash
a=23
b=2
if (( "$a" > "$b" )) ; then
	echo "$a > $b"
fi

2) Les caractères de comparaison liés aux commandes de tests

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 à

Exemple :

#!/bin/bash
a=2
b=1
if [ "$a" -gt "$b" ]
then
        echo "$a est plus grand que $b"
fi

3) Comparaison des syntaxes précédentes avec la syntaxe de la commande "test"

if test 100 -gt 99
then
	echo "vrai"   #réponse : vrai
else
	echo "faux"
fi

OU mieux :

test 100 -gt 99 && echo "vrai" || echo "faux"  # retour : vrai
text 100 -lt 99 && echo "vrai" || echo "faux"   # retour : faux

MAIS 0

[ "LEbash" = "Labash" ]; echo $?  #réponse 1 car l'expression est fausse. 
[ 5 -eq 5 ]; echo $?  # réponse : 0  car l'expression est vraie

Conclusion sur les tests

Nous avons vu qu'il était possible de faire des tests sur les chaînes de caractères ; sur les fichiers, sur les nombres.
Il y a deux mécanismes pour effectuer des tests, la paire de crochets et la commande test.
Elle s'utilise avec les mêmes expressions de comparaison mais avec une autre syntaxe :

test expression          ou bien     [ expression ]

$ test -f /etc/gaga                  $ [ -f /etc/gaga ]
$ echo $?                            $ echo $?
1                                    1
$                                    $

Dans les deux cas, le fichier /etc/gaga n'existe pas.
(Si le fichier /etc/gaga existait, le retour serait 0.)

  • Pour aller plus loin : les opérateurs logiques.

Ils s'utilisent avec les tests.

Opérateur Signification
! Négation
-a ET
-o OU

Et dans un ordre précis :

  1. ! (négation)
  2. -a (ET)
  3. -o (OU)
Il doit toujours y avoir un espace autour des opérateurs !, -a et -o.
Ne pas prendre -a (opérateur logique) pour un opérateur de test sur les fichiers.
Ni confondre -o (opérateur logique) avec -ot (test pour savoir si un fichier1 est plus ancien qu'un fichier2.
Il est possible de modifier la priorité d'exécution des opérateurs en utilisant des paranthèses. \(……..\) Les parenthèses doivent être protégées par des antislashes afin de ne pas être interprétées par le shell comme étant un regroupement de commandes.
  • syntaxe :

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

Tuto précédent

La suite c'est ici :

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/programmation/shells/page-man-bash-iii-les-operateurs-de-comparaison-numerique.1401433942.txt.gz · Dernière modification: 30/05/2014 09:12 par Hypathie

Pied de page des forums

Propulsé par FluxBB