Introduzione
L'istruzione case
bash viene generalmente utilizzata per semplificare condizionali complessi quando sono presenti più scelte diverse. Usare l'istruzione case
invece delle istruzioni if
nidificate aiuterà a rendere i tuoi script bash più leggibili e più facili da mantenere.
L'istruzione Bash ha un concetto simile all'istruzione case
in Javascript o switch
in C. La differenza principale è che, a differenza switch
dell'istruzione C, l'istruzione Bash case
non continua a cercare un modello corrispondente una volta che ne ha trovato uno ed eseguito le istruzioni associate a quel modello.
Questo tutorial coprirà le basi dell'istruzione Bash case
e ti mostrerà come usarla nei tuoi script di shell.
Sintassi dell'istruzione case
La sintassi dell'istruzione case Bash è costituita dalla case
parola chiave " " seguita dal valore da abbinare, dalla in
parola chiave " " e da uno o più modelli con i blocchi di codice corrispondenti racchiusi nelle ;;
istruzioni " ":
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- Ogni istruzione
case
inizia con la parola chiavecase
, seguita dall'espressione maiuscole e minuscole e dalla parola chiavein
. L'affermazione termina con la parola chiaveesac
. - È possibile utilizzare più modelli separati dall'operatore
|
. L'operatore)
termina un elenco di modelli. - Un modello può contenere caratteri speciali .
- Un modello e i comandi associati sono noti come clausola.
- Ogni clausola deve terminare 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 caso predefinito. Questo modello corrisponderà sempre. - Se non viene trovato alcun modello, lo stato restituito è zero. Altrimenti lo stato di ritorno è lo stato di uscita dei comandi eseguiti.
Esempio di dichiarazione del caso
Di seguito è riportato un esempio dell'utilizzo di un'istruzione case
in uno script bash che stampa 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
Salva lo script personalizzato come file ed eseguilo dalla riga di comando.
bash languages.sh
Lo script ti chiederà di inserire un paese. Ad esempio, se digiti "Lituania", corrisponderà al primo modello e il echo
comando in quella clausola verrà eseguito.
Lo script stamperà il seguente output:
Enter the name of a country: Lithuania
The official language of Lithuania is Lithuanian
Se inserisci un paese che non corrisponde a nessun altro modello tranne il simbolo asterisco jolly predefinito, diciamo l'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
A questo punto dovresti avere una buona conoscenza di come scrivere istruzioni bash case
. Vengono spesso utilizzati per passare parametri a uno script di shell dalla riga di comando. Ad esempio, gli script init utilizzano istruzioni case
per avviare, arrestare o riavviare i servizi.