Introduzione
Le dichiarazioni Case di Bash sono generalmente utilizzate per semplificare condizionali complessi quando si hanno più scelte diverse. L'uso dell'istruzione case a differenza delle istruzioni if annidate ti aiuterà a rendere i tuoi script bash più leggibili e più facili da gestire.
L'istruzione case Bash ha un concetto simile con l'istruzione switch Javascript o C. La differenza principale è che, diversamente dall'istruzione switch C, l'istruzione Case Bash non continua a cercare una corrispondenza di pattern una volta trovata ed eseguita.
In questo tutorial, tratteremo le basi delle dichiarazioni del Case Bash e ti mostreremo come usarle negli script della shell.
Sintassi dell'istruzione Case
L'istruzione Case Bash ha la forma seguente:
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- Ogni istruzione Case inizia con la parola chiave
case
seguita dall'espressione Case e dalla parola chiavein
. L'istruzione termina con la parola chiaveesac
. - È possibile utilizzare più condizioni separate dall'operatore
|
. L'operatore)
termina un elenco di schemi. - Un modello può avere caratteri speciali .
- Un modello e i comandi associati sono noti come clausole.
- Ogni clausola deve essere risolta con
;;
. - Vengono eseguiti i comandi corrispondenti al primo modello che corrisponde all'espressione.
- È pratica comune utilizzare il simbolo asterisco jolly
*
come modello finale per definire il case predefinito. Questo modello corrisponderà sempre. - Se non viene trovato alcun risultato, lo stato di ritorno è zero. Altrimenti, lo stato di ritorno è lo stato di uscita dei comandi eseguiti.
Esempio di Case
Ecco un esempio usando l'istruzione Case in uno script Bash che stamperà la lingua ufficiale di un determinato paese:
#!/bin/bash
echo -n "Enter the name of a country: "
read COUNTRY
echo -n "The official language of $COUNTRY is "
case $COUNTRY in
Lithuania)
echo -n "Lithuanian"
;;
Romania | Moldova)
echo -n "Romanian"
;;
Italy | "San Marino" | Switzerland | "Vatican City")
echo -n "Italian"
;;
*)
echo -n "unknown"
;;
esac
Salvare lo script personalizzato come file ed eseguirlo dalla riga di comando.
bash languages.sh
Lo script ti chiederà di entrare in un paese. Ad esempio, se si digita "Lituania", corrisponderà al primo modello e verrà eseguito il comando echo
in quella clausola.
Lo script stamperà il seguente output:
Enter the name of a country: Lithuania
The official language of Lithuania is Lithuanian
Se si immette un paese che non corrisponde ad alcun altro motivo tranne il simbolo asterisco jolly predefinito, supponiamo che in Argentina lo script eseguirà il comando echo all'interno della clausola predefinita.
Enter the name of a country: Argentina
The official language of Argentina is unknown
Conclusione
Ormai dovresti avere una buona conoscenza di come scrivere le dichiarazioni Case di bash. Sono spesso usati per passare parametri a uno script di shell dalla riga di comando. Ad esempio, gli script init utilizzano le istruzioni Case per l'avvio, l'arresto o il riavvio dei servizi.