back to top

Operatori – Guida Shell Scripting

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

-eqEquivalenza
-neDisuguaglianza
-gtMaggiore
-geMaggiore o Uguale
-ltMinore
-leMinore o Uguale

Operatori di Confronto (Stringhe) – Si utilizzano solo ed esclusivamente con variabili stringa

-nVerifica che la stringa sia di lunghezza maggiore di zero
-zVerifica 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
-aOperatore AND. Ritorna vero se entrambi gli argomenti passati lo sono.
-oOperatore 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.

Pubblicità
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).