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.