In questo lezione della nostra guida allo scripting nella Shell di Linux passiamo in rasegna i cd. operatori suddividendoli in gruppi
Operatori Matematici – Si utilizzano solo ed esclusivamente con valori numerici
+ | Somma |
– | Sottrazione |
\* | Moltiplicazione |
/ | Divisione |
** | Esponenzia il primo numero al secondo |
% | Ritorna il resto di una divisione |
Per effettuare operazioni matematiche sulle variabili è necessario utilizzare alternativamente:
- il comando esterno expr tra apici gravi
- le doppie parentesi tonde (( e ))
- il costrutto let
Vediamo qualche esempio:
#!/bin/sh
#Operazioni matematiche con numeri interi
#Definiamo due variabili numeriche
X=10
Y=4
#Uso di expr tra apici gravi
R1=`expr $X - $Y`
#Uso le doppie parentesi
R2=$((X-Y))
#Uso di let
let "R3 = X - Y"
#Stampiamo a video i risultati
echo "risultato di expr: "$R1
echo "risultato delle dopie parentesi: "$R2
echo "risultato di let: "$R3
Ritengo opportuno ricordare che la funzione dei backtick, come già detto, è quella di circoscrivere (come fanno le virgolete nel caso di variabili stringa conteneti spazi vuoti) operazioni composte da comandi seguiti da uno o più attributi tra loro separati (come nel caso di expr visto sopra).
Da ricordare che expr funziona solo con i numeri interi. Se volete lavorare con numeri decimali utilizzate il comando bc (binary calculator) in questo modo:
echo "2.11 + 8.7" | bc
Riprendiamo lo script matematico visto sopra ponendo che le due variabili X e Y siano numeri decimali:
#!/bin/sh
#Operazioni matematiche con numeri decimali
X=7.3
Y=4.22
Z=`echo "$X + $Y" | bc`
echo $Z
Operatori di Confronto (Numerico) – Si utilizzano solo ed esclusivamente con valori numerici
-eq | Equivalenza |
-ne | Disuguaglianza |
-gt | Maggiore |
-ge | Maggiore o Uguale |
-lt | Minore |
-le | Minore o Uguale |
Operatori di Confronto (Stringhe) – Si utilizzano solo ed esclusivamente con variabili stringa
-n | Verifica che la stringa sia di lunghezza maggiore di zero |
-z | Verifica che la stringa abbia lunghezza zero |
= | Verifica che due stringhe siano uguali |
!= | Verifica che due stringhe siano diverse |
< | Verifica che la prima stringa sia lessicograficamente minore della seconda |
> | Verifica che la prima stringa sia lessicograficamente maggiore della seconda |
Operatori Logici
! | Operatore di negazione, inverte il valore logico dell’espressione al quale viene applicato. !(vero) = falso |
-a | Operatore AND. Ritorna vero se entrambi gli argomenti passati lo sono. |
-o | Operatore OR. Ritorna vero se almeno uno degli argomenti lo è. |
Uno degli utilizzi tipici degli operatori (di confronto e tipici) è quello di partecipare alla costruzione di condizioni, che assumono un particolare rilievo, come vedremo, nelle istruzioni di controllo.
E’ opportuno dar menzione in questa sede che esistono altri operatori, ma ai fini di questa guida preferisco limtarmi a quelli sopra menzionati.