HOWTO · Linux

Usa l'istruzione If ... else in Bash

Possiamo usare l'istruzione if ... else in Bash per eseguire le istruzioni se una particolare condizione è soddisfatta o meno.

In questa pagina

Le dichiarazioni condizionali sono prevalenti per il processo decisionale in quasi tutti i linguaggi di programmazione. Consentono l’esecuzione di una o più istruzioni solo se una particolare condizione è soddisfatta. if ... else è usato come una dichiarazione condizionale nella maggior parte dei linguaggi di programmazione. In Bash abbiamo anche if, if...elif...else, if ... else e annidati if come enunciati condizionali.

Istruzione if in Bash

Sintassi dell’istruzione if

if Test-Expression
then
  Statements
fi

Nell’esempio precedente, se Test-Expression è True, vengono eseguite le Statements. La parola chiave fi viene utilizzata per terminare l’istruzione if.

Se l’Espressione di prova non è True, nessuna delle Dichiarazioni viene eseguita.

Per rendere il nostro codice più leggibile e organizzato, possiamo usare il rientro di 4 o 2 spazi.

Esempio: istruzione if in Bash

echo -n "Enter numnber : "
read n
 
rem=$(( $n % 2 ))
 
if [ $rem -eq 0 ]
then
  echo "$n is even number"
fi

Produzione:

Enter numnber : 4
4 is even number

Accetta un numero dall’utente e fornisce l’output solo se il numero è pari.

Se il numero è pari, il resto è zero quando il numero viene diviso per due. Pertanto l’espressione di test è True in modo che venga eseguita l’istruzione echo.

Istruzione if ... else in Bash

Sintassi dell’istruzione if ... else

if Test-Expression
then
  Statements-1

else
  Statements-2
fi

In questo esempio, se Test-Expression è True, viene eseguito Statements-1; in caso contrario, viene eseguita la Statements-2. Per terminare l’istruzione if ... else, viene utilizzata la parola chiave fi.

Esempio: istruzione if...else in Bash

echo -n "Enter numnber : "
read n
 
rem=$(( $n % 2 ))
 
if [ $rem -eq 0 ]
then
  echo "$n is even number"
else
  echo "$n is odd number"
fi

Produzione:

Enter numnber : 5
4 is odd number

Accetta un numero dall’utente e fornisce un output a seconda che il numero di input sia esattamente divisibile per 2 o meno.

Se il numero è pari, il resto è zero quando il numero viene diviso per due; pertanto, l’espressione di test è True e l’istruzione echo "$n is even number" viene eseguita.

Se il numero è dispari, il resto è diverso da zero; quindi, l’espressione di test è False, e l’istruzione echo "$n is odd number" viene eseguita.

if...elif...else Istruzione in Bash

Sintassi dell’istruzione if...elif...else

if Test-Expression-1
then
  Statements-1
elif Test-Expression-2
then
  Statements-2

else
  Statements-3
fi

Se Test-Expression-1 è True, viene eseguito Statements-1. Altrimenti, se Test-Expression-2 è True, viene eseguito Statements-2.

Se nessuna delle espressioni di prova è True, viene eseguita la Statements-3.

Possiamo avere tante affermazioni elif quante ne desideriamo, e l’affermazione else è facoltativa.

Esempio: if...elif...else Istruzione in Bash

echo -n "Enter the value of a: "
read a

echo -n "Enter the value of b: "
read b

if [ $a -lt $b ]
then
   echo "a is less than b"
   
elif [ $a -gt $b ]
then
   echo "a is greater than b"

else
   echo "a is equal to b"
fi

Produzione:

Enter the value of a: 4
Enter the value of b: 4
a is equal to b

Accetta due numeri come input dell’utente e stampa il risultato in base a quale delle espressioni di test è vera.

Se a<b, il programma stampa a is less than b.

Se a>b, il programma stampa a is greater then b.

Se nessuna delle affermazioni condizionali è vera, il programma stampa a is equal to b.

Istruzione if annidata in Bash

Quando un’istruzione if è posta all’interno di un’altra istruzione if, viene chiamata un’istruzione if annidata.

echo -n "Enter numnber : "
read a
 
rem=$(( $a % 2 ))
 
if [ $rem -eq 0 ]
then
  if [ $a -gt 10 ]
  then
    echo "$a is even number and greater than 10."
	
  else
    echo "$a is even number and less than 10."
  fi
else
  echo "$a is odd number"
fi

Produzione:

Enter numnber : 46
46 is even number and greater than 10.

Dimostra l’uso dell’istruzione if annidata. Se il numero è esattamente divisibile per 2 e maggiore di 10, viene eseguita l’istruzione echo "$a is even number and greater than 10.".