Unix / Linux - Esempio di operatori relazionali della shell

Bourne Shell supporta i seguenti operatori relazionali specifici per i valori numerici. Questi operatori non funzionano per i valori stringa a meno che il loro valore non sia numerico.

Assumi variabile a detiene 10 e variabile b detiene 20 quindi -

Operatore Descrizione Esempio
-eq Controlla se il valore di due operandi è uguale o meno; se sì, la condizione diventa vera. [$ a -eq $ b] non è vero.
-ne Controlla se il valore di due operandi è uguale o meno; se i valori non sono uguali, la condizione diventa vera. [$ a -ne $ b] è vero.
-gt Controlla se il valore dell'operando sinistro è maggiore del valore dell'operando destro; se sì, la condizione diventa vera. [$ a -gt $ b] non è vero.
-lt Controlla se il valore dell'operando sinistro è inferiore al valore dell'operando destro; se sì, la condizione diventa vera. [$ a -lt $ b] è vero.
-ge Controlla se il valore dell'operando sinistro è maggiore o uguale al valore dell'operando destro; se sì, la condizione diventa vera. [$ a -ge $ b] non è vero.
-le Controlla se il valore dell'operando sinistro è minore o uguale al valore dell'operando destro; se sì, la condizione diventa vera. [$ a -le $ b] è vero.

È molto importante capire che tutte le espressioni condizionali devono essere inserite all'interno di parentesi quadre con spazi intorno. Per esempio,[ $a <= $b ] è corretto mentre, [$a <= $b] non è corretto.

Esempio

Ecco un esempio che utilizza tutti gli operatori relazionali:

#!/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

Lo script sopra genererà il seguente risultato:

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

I seguenti punti devono essere considerati mentre si lavora con operatori relazionali:

  • Devono essere presenti degli spazi tra gli operatori e le espressioni. Ad esempio, 2 + 2 non è corretto; dovrebbe essere scritto come 2 + 2.

  • if...then...else...fi dichiarazione è una dichiarazione decisionale che è stata spiegata nel prossimo capitolo.

unix-basic-operators.htm