GNU/Linux >> Linux Esercitazione >  >> Linux

Sintassi ed esempi dell'istruzione Bash case

Introduzione

Il case bash istruzione è la forma più semplice dell'istruzione condizionale if elif else. Il case istruzione semplifica condizioni complesse con più scelte diverse. Questa istruzione è più facile da mantenere e più leggibile rispetto a if annidato dichiarazioni.

Il case l'istruzione verifica il valore di input finché non trova il modello corrispondente ed esegue il comando collegato a quel valore di input. Pertanto, è una scelta eccellente per la creazione di menu in cui gli utenti selezionano un'opzione che attiva un'azione corrispondente.

In questo tutorial imparerai il case bash dichiarazione nozioni di base e come usarlo negli script di shell.

Prerequisiti

  • Una macchina che esegue Linux.
  • Accesso alla riga di comando.
  • Un editor di testo come vi/vim.

Sintassi dell'istruzione del caso Bash

Il case bash istruzione prende la seguente sintassi:

case $variable in
pattern-1)
  commands;;
pattern-2)
  commands;;
pattern-3)
  commands;;
pattern-N)
  commands;;
*)
  commands;;
esac

Il case l'istruzione inizia con il case parola chiave seguita dalla $variable e il in parola chiave. L'istruzione termina con il case parola chiave indietro - esac .

$variable

  • Lo script confronta l'input $variable contro gli schemi in ogni clausola finché non trova una corrispondenza.

Modelli

  • Un pattern e i suoi comandi formano una clausola , che termina con ;; .
  • I motivi supportano i caratteri speciali.
  • Il ) l'operatore termina un elenco di modelli.
  • Il | l'operatore separa più pattern.
  • Lo script esegue i comandi corrispondenti al primo pattern che corrisponde all'input $variable .
  • L'asterisco * il simbolo definisce il caso predefinito, di solito nel modello finale.

Stato di uscita

Lo script ha due stati di uscita:

  • 0 . Lo stato di ritorno quando l'input non corrisponde a nessun modello.
  • Stato comando eseguito . Se il comando fa corrispondere la variabile di input a un pattern, viene restituito lo stato di uscita del comando eseguito.

Esempi di dichiarazioni di casi Bash

Questa sezione mostra esempi pratici di utilizzo di bash case dichiarazione.

Esempio 1:output di una descrizione per ciascuna opzione

L'esempio seguente è uno script che consente all'utente di scegliere un colore e mostra un commento corrispondente all'input utilizzando il comando echo.

Segui le istruzioni seguenti:

1. Apri il terminale (Ctrl + Alt + T ) e creare lo script:

vi color.sh

2. Aggiungi le seguenti righe allo script:

#!/bin/bash
echo "Which color do you like best?"
echo "1 - Blue"
echo "2 - Red"
echo "3 - Yellow"
echo "4 - Green"
echo "5 - Orange"
read color;
case $color in
  1) echo "Blue is a primary color.";;
  2) echo "Red is a primary color.";;
  3) echo "Yellow is a primary color.";;
  4) echo "Green is a secondary color.";;
  5) echo "Orange is a secondary color.";;
  *) echo "This color is not available. Please choose a different one.";; 
esac

Ciascuna delle linee ha il ruolo seguente:

  • La prima riga di ogni script è in genere shebang (#! ), che indica al sistema operativo quale interprete utilizzare per analizzare il file.
  • Le righe 2-7 sono il menu delle opzioni presentato all'utente tra cui scegliere.
  • Il read color; La variabile richiede all'utente una risposta e la memorizza.
  • Il case contiene le possibili risposte che corrispondono all'input dell'utente. In questo esempio, l'output è echo output del comando.
  • L'ultima riga, esac , chiude il case dichiarazione.

3. Salvare lo script ed uscire da vi con il seguente comando:

:wq

4. Prima di eseguire ogni script, assicurati di chmod per renderlo eseguibile:

chmod +x color.sh

5. Esegui lo script:

./color.sh

Lo script offre il menu delle opzioni e genera un messaggio diverso a seconda dell'opzione selezionata.

Esempio 2:utilizzo di più ricami

Il case istruzione consente di utilizzare più modelli in ogni clausola. Se l'espressione corrisponde ai modelli specificati, lo script esegue i comandi in quella clausola.

Questo script di esempio richiede all'utente di inserire un mese e restituisce il numero di giorni. Ci sono tre possibili risposte:

  • 30 giorni.
  • 31 giorni.
  • 28 o 29 giorni per febbraio.

Segui i passaggi seguenti per creare lo script:

1. Crea lo script month.sh eseguendo:

vi month.sh

2. Immettere le seguenti righe e salvare lo script:

#!/bin/bash
shopt -s nocasematch
echo "Enter the name of a month."
read month
case $month in
  February)
 
echo "There are 28/29 days in $month.";;
  April | June | September | November)
echo "There are 30 days in $month.";;
  January | March | May | July | August | October | December)
echo "There are 31 days in $month.";;
  *)
echo "Unknown month. Please check if you entered the correct month name: $month";;
esac

Nell'esempio sopra:

  • Il shopt comando con il -s nocasematch l'opzione riduce la possibilità di errore con il criterio di corrispondenza senza distinzione tra maiuscole e minuscole.
  • Il simbolo della pipa | separa i modelli in ciascuna delle clausole.

3. Rendi eseguibile lo script:

chmod +x month.sh

4. Esegui lo script:

./month.sh

Lo script ignora le differenze tra maiuscole e minuscole e restituisce il numero corretto di giorni nel mese selezionato.

Esempio 3:per i loop

Usa un for loop in case dichiarazioni quando ci sono molte espressioni da elaborare. Lo script seguente restituisce tutti i tipi di file da una directory.

Segui i passaggi seguenti:

1. Crea lo script della shell:

vi filelist.sh

2. Immettere le seguenti righe e quindi salvare lo script:

#!/bin/bash
for file in $(ls)
do
Extension=${file##*.}
case "$Extension" in
  sh) echo "Shell script: $file";;
  md) echo "A markdown file: $file";;
  png) echo "PNG image file: $file";;
  txt) echo "A text file: $file";;
  zip) echo "An archive: $file";;
  conf) echo "A configuration file: $file";;
  py) echo "A Python script: $file";;
  *) echo "Unknown file type: $file";;
esac
done

Nell'esempio sopra:

  • Le l comando estrae un elenco di file dalla directory.
  • Il for loop applica il globbing dei file per estrarre l'estensione di ogni file.

3. Rendi eseguibile lo script:

chmod +x filelist.sh

4. Esegui lo script:

./filelist.sh

Lo script identifica ogni tipo di file presente nella directory corrente.

Esempio 4:creare una rubrica

Usa il case dichiarazione per creare un semplice database e generare rapidamente le informazioni richieste. L'esempio seguente restituisce il nome, l'indirizzo e-mail e l'indirizzo della persona selezionata:

1. Crea lo script:

vi phonebook.sh

2. Aggiungi le seguenti righe e salva lo script:

#!/bin/bash
echo "Choose a contact to display information:"
echo "[C]hris Ramsey"
echo "[J]ames Gardner"
echo "[S]arah Snyder"
echo "[R]ose Armstrong"
read person
case "$person" in
  "C" | "c" ) echo "Chris Ramsey"
echo "[email protected]"
echo "27 Railroad Dr. Bayside, NY";;
  "J" | "j" ) echo "James Gardner"
echo "[email protected]"
echo "31 Green Street, Green Cove Springs, FL";;
  "S" | "s") echo "Sarah Snyder"
echo "[email protected]"
echo "8059 N. Hartford Court, Syosset, NY";;
  "R" | "r") echo "Rose Armstrong"
echo "[email protected]"
echo "49 Woodside St., Oak Forest, IL";;
  *) echo "Contact doesn't exist.";;
esac

3. Modifica lo script:

chmod +x phonebook.sh

3. Esegui lo script:

./phonebook.sh

Lo script restituisce i dettagli di contatto per la persona selezionata. La selezione di un'opzione non elencata notifica all'utente che il contatto non esiste.

Esempio 5:verifica del tipo di carattere

L'esempio seguente mostra come utilizzare il case istruzione per verificare quale tipo di carattere è stato inserito dall'utente.

Segui i passaggi seguenti:

1. Crea lo script:

vi character.sh

2. Aggiungi le seguenti righe e salva lo script:

#!/bin/bash
echo "Enter a character:"
read var
case $var in
  [[:lower:]) echo "You entered a lowercase character.";;
  [[:upper:]]) echo "You entered an uppercase character.";;
  [0-9]) echo "You entered a digit.";;
  ?) echo "You entered a special character.";;
  *) echo "You entered multiple characters.";;
esac

Nell'esempio sopra:

  • Il $var la variabile di controllo memorizza l'input.
  • Invece di digitare tutte le possibili combinazioni da confrontare, usa le parentesi quadre [] per denotare un intervallo di caratteri. Usa parentesi quadre doppie [[]] per le gamme POSIX. if-else richiede l'inserimento di ogni condizione carattere individualmente.
  • Il ? il carattere copre i caratteri che non sono minuscoli, maiuscoli o cifre. Sostituisce un solo carattere, al contrario di * che sostituisce tutto quanto non coperto dalle condizioni di cui sopra.

3. Modifica le autorizzazioni per rendere eseguibile lo script:

chmod +x character.sh

4. Esegui lo script:

./character.sh

L'output indica il tipo di carattere immesso dopo averlo confrontato con le condizioni specificate.


Linux
  1. Bash For Loop Guida ed esempi

  2. Il comando AWK di Linux:esempi di sintassi di utilizzo di Linux e Unix

  3. 4 Esempi di istruzioni Awk If ( if, if else, if else if, :? )

  4. 4 Esempi di istruzioni Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  5. 5 Esempi di dichiarazioni di Bash Case

Bash Scripting – Case Statement

Come lavorare con l'istruzione Case negli script Bash

Bash If Else Sintassi con esempi

Comprendere Bash If Else e altre dichiarazioni condizionali

Esercitazione sulle variabili Bash:6 esempi pratici di variabili globali e locali Bash

Esempi e utilizzo di Grep con distinzione tra maiuscole e minuscole