back to top

Istruzioni di controllo: IF – Guida Shell Scripting

le istruzioni di controllo sono, come dice già il loro nome, un insieme di istruzioni che controllano (appunto) il funzionamento del programma sulla base del verificarsi o meno di date condizioni. Per prima cosa vediamo il funzionamento del costrutto if.

Una cosa molto importante da ricordare è che le condizioni vanno sempre inserite all’interno delle parentesi quadre [ e ] avendo cura di lasciare uno spazio bianco subito dopo l’apertura e subito prima della chiusura delle parentesi.

Partiamo da un esempio: poniamo di voler porre una domanda e di stampare a video un messaggio a seconda che la risposta sia corretta o meno:

#!/bin/sh

#Faccio la mia domanda
echo -n "Qual'è il nome di Garibaldi? "

#Recupero la risposta
read RISPOSTA

#Stampo a video il risultato
if [ ${RISPOSTA} = "giuseppe" ]
then
   echo "Risposta esatta"
else
   echo "Risposta sbagliata"
fi

Il costrutto if ha una sintassi molto semplice: si esprime la condizione e se essa risulta vera la shell esegue le istruzioni subito dopo then. In caso contrario è possibile specificare delle istruzioni opzionali alternative subito dopo else. Ogni costrutto if termina con fi.

Da notare che dopo la parentesi siamo andati a capo… ma avremmo anche potuto scrivere così:

if [ condizione ]; then

Invece di andare a capo, quindi, si aggiunge un punto e virgola alla chiusura della parenresi quadra. Il punto e virgola ha infatti la funzione di separatore di comandi che quindi possono essere così mesi silla stessa riga.

Nel caso in cui ci siano condizioni multiple è possibile usare elif al posto dei vari if ed esprimere una sola volta le istruzioni alterntative con else alla fine. Facciamo un altro esempio:

#!/bin/sh

#Faccio la mia domanda
echo -n "Quanti anni hai? "

#Recupero la risposta
read ANNI

#Stampo a video il risultato
if [ ${ANNI} -lt 10 ]
then
   echo "Sei un bambino"
elif [ ${ANNI} -lt 18 ]
   echo "Sei minorenne"
else
   echo "Sei maggiorenne"
fi

nella prossima lezione vedremo una struttura di controllo alternativa ad if che può essere utile in determinate circostanze.

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).