In questo articolo, daremo un'occhiata alle case statement di bash e come usarli negli script bash. La denuncia del caso è un bash costruito e viene utilizzato per semplificare la logica condizionale negli script bash.
[ Potrebbe piacerti anche:Come utilizzare il comando Declare in Linux Bash Shell ]
Per dirla in termini semplici, quando il tuo codice ha più condizionali [ if - elif - else ]
dichiarazioni è possibile sostituire le dichiarazioni condizionali con dichiarazioni case. Il concetto dell'istruzione case è disponibile anche in altri linguaggi di programmazione come C, Perl, Java, Javascript, ecc. In alcuni linguaggi sarà un'istruzione switch case e in alcuni linguaggi sarà un'istruzione case, differisce a seconda alla lingua che usi.
Comprendere la sintassi per la dichiarazione del caso
Prima di utilizzare l'istruzione case nei tuoi script devi capirne la sintassi.
case expression in pattern1) STATEMENTS ;; pattern2 | pattern3) STATEMENTS ;; pattern-N) STATEMENTS ;; *) STATEMENTS ;; esac
Sopra la spiegazione della dichiarazione del caso.
- L'istruzione case deve iniziare con la parola chiave case e terminare con esac parola chiave.
- L'istruzione case valuterà un'espressione e scoprirà se l'espressione corrisponde a uno qualsiasi dei modelli. L'espressione dovrebbe venire dopo la parola chiave case.
- I modelli verranno valutati e se corrisponde all'espressione, verrà eseguita l'istruzione. I modelli e le istruzioni sono chiamati clausole. Per terminare una clausola usa un doppio punto e virgola
";;"
. - Se un pattern corrisponde, il resto dei pattern viene saltato.
- Puoi creare tutti i modelli che vuoi.
- Il simbolo dell'asterisco
(*)
verrà utilizzato come modello predefinito. Se un'espressione non trova corrispondenza con nessuno dei modelli, verrà utilizzato il modello predefinito.
Creazione di una semplice istruzione Case nello script
Sto creando una semplice dichiarazione del caso che mostrerà la squadra che ha vinto la Champions League in base all'anno. L'utente deve passare l'anno come input.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016) echo " Winner is Real Madrid";; 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac

Dai un'occhiata al codice e all'output sopra. L'utente sta trascorrendo l'anno come input e memorizzato nella variabile WINNER . L'anno verrà valutato rispetto a tutti gli anni indicati come modelli all'interno della dichiarazione del caso. Se l'anno trascorso dall'utente non corrisponde a nessun modello, modello predefinito (*)
viene utilizzato.
È anche possibile valutare più modelli in una singola clausola. Devi usare il "|"
simbolo per l'utilizzo di uno o più modelli in una clausola. Useremo lo stesso codice dell'esempio precedente. Se dai un'occhiata agli anni 2016 e 2017 la stessa squadra ha vinto la coppa. Invece di creare clausole separate per il 2016 e il 2017, puoi creare un'unica clausola.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac
Ora, quando l'utente passa 2016 o 2017 come input, verrà valutato nella prima clausola.

Puoi anche usare la corrispondenza dei modelli nelle istruzioni case. Sto nuovamente modificando lo stesso codice e aggiungendo altre due clausole da valutare per stringhe e altri anni.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; [a..z]* | [A..Z]*) echo " Year should be passed as argument. Input is wrong";; [0-9][0-9][0-9][0-9]) echo "No data for the passed year..." esac

Ti suggerisco di dare un'occhiata a ~/.bashrc
file e file in /etc/init.d/ dove verrà utilizzata la dichiarazione del caso. L'analisi di questi file ti darà un'idea di come vengono utilizzati in tempo reale.
Questo è tutto per questo articolo. La denuncia del caso è un concetto importante da sapere quando si lavora con gli script di shell. Quando inizi a sostituire le istruzioni condizionali con le istruzioni case, il tuo codice sarà pulito e gestibile.