Unix / Linux - Exemple d'opérateurs relationnels Shell

Bourne Shell prend en charge les opérateurs relationnels suivants qui sont spécifiques aux valeurs numériques. Ces opérateurs ne fonctionnent pas pour les valeurs de chaîne, sauf si leur valeur est numérique.

Supposons une variable a détient 10 et variable b détient 20 alors -

Opérateur La description Exemple
-eq Vérifie si la valeur de deux opérandes est égale ou non; si oui, alors la condition devient vraie. [$ a -eq $ b] n'est pas vrai.
-ne Vérifie si la valeur de deux opérandes est égale ou non; si les valeurs ne sont pas égales, la condition devient vraie. [$ a -ne $ b] est vrai.
-gt Vérifie si la valeur de l'opérande gauche est supérieure à la valeur de l'opérande droit; si oui, alors la condition devient vraie. [$ a -gt $ b] n'est pas vrai.
-lt Vérifie si la valeur de l'opérande gauche est inférieure à la valeur de l'opérande droit; si oui, alors la condition devient vraie. [$ a -lt $ b] est vrai.
-ge Vérifie si la valeur de l'opérande gauche est supérieure ou égale à la valeur de l'opérande droit; si oui, alors la condition devient vraie. [$ a -ge $ b] n'est pas vrai.
-le Vérifie si la valeur de l'opérande gauche est inférieure ou égale à la valeur de l'opérande droit; si oui, alors la condition devient vraie. [$ a -le $ b] est vrai.

Il est très important de comprendre que toutes les expressions conditionnelles doivent être placées entre des accolades carrées avec des espaces autour d'elles. Par exemple,[ $a <= $b ] est correct alors que, [$a <= $b] est incorrect.

Exemple

Voici un exemple qui utilise tous les opérateurs relationnels -

#!/bin/sh

a=10
b=20

if [ $a -eq $b ]
then
   echo "$a -eq $b : a is equal to b"
else
   echo "$a -eq $b: a is not equal to b"
fi

if [ $a -ne $b ]
then
   echo "$a -ne $b: a is not equal to b"
else
   echo "$a -ne $b : a is equal to b"
fi

if [ $a -gt $b ]
then
   echo "$a -gt $b: a is greater than b"
else
   echo "$a -gt $b: a is not greater than b"
fi

if [ $a -lt $b ]
then
   echo "$a -lt $b: a is less than b"
else
   echo "$a -lt $b: a is not less than b"
fi

if [ $a -ge $b ]
then
   echo "$a -ge $b: a is greater or  equal to b"
else
   echo "$a -ge $b: a is not greater or equal to b"
fi

if [ $a -le $b ]
then
   echo "$a -le $b: a is less or  equal to b"
else
   echo "$a -le $b: a is not less or equal to b"
fi

Le script ci-dessus générera le résultat suivant -

10 -eq 20: a is not equal to b
10 -ne 20: a is not equal to b
10 -gt 20: a is not greater than b
10 -lt 20: a is less than b
10 -ge 20: a is not greater or equal to b
10 -le 20: a is less or  equal to b

Les points suivants doivent être pris en compte lors de l'utilisation d'opérateurs relationnels -

  • Il doit y avoir des espaces entre les opérateurs et les expressions. Par exemple, 2 + 2 n'est pas correct; il doit être écrit 2 + 2.

  • if...then...else...fi déclaration est une déclaration de prise de décision qui a été expliquée dans le chapitre suivant.

unix-basic-operators.htm