Usa l'istruzione If ... else in Bash

Suraj Joshi 30 gennaio 2023
  1. Istruzione if in Bash
  2. Istruzione if ... else in Bash
  3. if...elif...else Istruzione in Bash
  4. Istruzione if annidata in Bash
Usa l'istruzione If ... else in Bash

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

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn