Il case bash istruzione viene generalmente utilizzata per semplificare condizionali complessi quando si hanno più scelte diverse. Usando il case istruzione invece di if annidato le istruzioni ti aiuteranno a rendere i tuoi script bash più leggibili e facili da mantenere.
Il case di Bash L'istruzione ha un concetto simile con Javascript o C switch dichiarazione. La differenza principale è che, a differenza del C switch dichiarazione, il case di Bash istruzione non continua a cercare una corrispondenza di pattern una volta che ne ha trovata una ed ha eseguito le istruzioni associate a quel pattern.
In questo tutorial, tratteremo le basi del case Bash istruzione e mostrarti come usarlo nei tuoi script di shell.
case Sintassi dell'istruzione #
Il case di Bash dichiarazione assume la forma seguente:
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- Ogni
casel'istruzione inizia con ilcaseparola chiave, seguita dall'espressione case e dainparola chiave. L'istruzione termina conesacparola chiave. - Puoi usare più pattern separati da
|operatore. Il)l'operatore termina un elenco di modelli. - Un pattern può avere caratteri speciali.
- Un pattern e i suoi comandi associati sono conosciuti come una clausola.
- Ogni clausola deve essere terminata con
;;. - I comandi corrispondenti al primo pattern che corrisponde all'espressione vengono eseguiti.
- È pratica comune utilizzare il simbolo dell'asterisco jolly (
*) come modello finale per definire il caso predefinito. Questo modello corrisponderà sempre. - Se nessun modello corrisponde, lo stato di ritorno è zero. In caso contrario, lo stato di ritorno è lo stato di uscita dei comandi eseguiti.
Esempio di istruzione del caso #
Ecco un esempio usando il case dichiarazione 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
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 a echo il 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 di asterisco jolly predefinito, supponiamo che lo script eseguirà l'echo Argentina comando 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 comprensione di come scrivere bash case dichiarazioni. Sono spesso usati per passare parametri a uno script di shell dalla riga di comando. Ad esempio, gli script init utilizzano case istruzioni per l'avvio, l'arresto o il riavvio dei servizi.
Se hai domande o feedback, sentiti libero di lasciare un commento.