GNU/Linux >> Linux Esercitazione >  >> Linux

Come lavorare con l'istruzione Case negli script Bash

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.


Linux
  1. Come far funzionare correttamente Vim con Tmux?

  2. Come impostare Bash per eseguire *.exe con Mono?

  3. Come abbinare i modelli senza distinzione tra maiuscole e minuscole con Ls?

  4. Bash Istruzione If-Else con esempi

  5. 5 Esempi di dichiarazioni di Bash Case

Come utilizzare le istruzioni condizionali negli script Bash

Come creare documenti con gli script Bash

Come lavorare con Ansible Provisioner in Vagrant

Come utilizzare il comando echo negli script Bash in Linux

Come lavorare con l'istruzione Case negli script Bash

Bash If Else Sintassi con esempi