Una dichiarazione di caso negli script bash viene utilizzato quando è necessario prendere una decisione rispetto a più scelte. In altre parole, è utile quando un'espressione ha la possibilità di avere più valori. Questa metodologia può essere vista come una sostituzione di più istruzioni if in uno script. Le istruzioni case hanno un vantaggio rispetto alle istruzioni if perché migliorano la leggibilità del nostro codice e sono più facili da mantenere. Le istruzioni Case in uno script Bash sono abbastanza simili alle istruzioni Case nel linguaggio C. Ma a differenza di C, l'istruzione Bash Case smette di continuare la ricerca non appena si verifica la corrispondenza. In parole semplici, non richiedono alcuna istruzione break obbligatoria da utilizzare in C per interrompere ulteriormente la ricerca di un pattern.
La sintassi di base di un'istruzione case è riportata di seguito,
Sintassi:
case EXPRESSION in Pattern_Case_1) STATEMENTS ;; Pattern_Case_1) STATEMENTS ;; Pattern_Case_N) STATEMENTS ;; *) STATEMENTS ;; esac>
Ecco come funziona la dichiarazione del caso:
EXPRESSION>è la variabile o il valore che viene valutato rispetto a diversi modelli (casi) per trovare una corrispondenza.- L'istruzione case inizia con la parola chiave
case>seguito dalEXPRESSION>da valutare. - Ogni caso è definito da a
Pattern_Case>che rappresenta un valore o modello specifico da confrontare conEXPRESSION>. - Dopo ogni
Pattern_Case>, ci sono istruzioni da eseguire se ilEXPRESSION>corrisponde allo specificoPattern_Case>. Queste affermazioni sono indicate conSTATEMENTS>. - IL
;;>alla fine di ciascunoSTATEMENTS>block indica la fine di un blocco di casi. - IL
*)>è un caso speciale noto come caso predefinito. Se nessuno dei modelli precedenti corrisponde aEXPRESSION>, ILSTATEMENTS>sotto il*)>il blocco verrà eseguito. - IL
esac>La parola chiave segna la fine dell'istruzione case.
- Nel caso in cui non venga trovato alcun modello, lo stato di reso è zero. Altrimenti, lo stato restituito è lo stato di uscita del corpo eseguito del caso del modello corrispondente.
- Come C fornisce la parola chiave predefinita per l'istruzione predefinita, allo stesso modo nell'istruzione case Bash, possiamo utilizzare il simbolo asterisco jolly (*) e definire un modello finale caso per definire il caso predefinito.
Esempio 1: output di una descrizione per ciascuna opzione
In questo esempio uno script consente all'utente di selezionare un dipartimento e mostra una descrizione corrispondente all'input con l'aiuto di un comando echo. In questo script, abbiamo assegnato la variabile DEPARTMENT come Informatica. Pertanto, viene eseguito il corpo del primo pattern case.
listnode
Puoi seguire le istruzioni riportate di seguito:
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
department.sh>
2. Aggiungi queste istruzioni allo script:
#!/bin/bash DEPARTMENT='Computer Science' echo -n 'Your DEPARTMENT is ' case $DEPARTMENT in 'Computer Science') echo -n 'Computer Science' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication' ;; *) echo -n 'Invalid' ;; esac>
3. Ciascuna delle righe è descritta di seguito:
- La prima riga nello script inizia con lo shebang (#!).
- Indica al sistema operativo di utilizzare un particolare interprete per analizzare lo script.
- Abbiamo inizializzato una variabile DEPARTMENT come Informatica.
- Ora stiamo usando un'istruzione case.
- Ogni espressione è stata gestita tramite l'istruzione case.
- L'ultima riga, esac, è stata utilizzata per terminare l'istruzione case.
4. Salva lo script e rendilo eseguibile.
chmod +x department.sh>
5. Esegui lo script.
./department.sh>
Produzione:

Esempio 2: utilizzo di casi con modelli multipli
In ogni clausola possiamo utilizzare più casi modello. Se l'espressione corrisponde ad almeno un caso del modello, viene eseguito il corpo della clausola. In questo script, abbiamo assegnato la variabile DEPARTMENT come Elettronica e Comunicazioni. Il terzo caso del modello ha due valori separati dall'operatore barra verticale ( | ). Pertanto, viene eseguito il corpo del terzo pattern case.
Puoi seguire le istruzioni riportate di seguito:
k algoritmo di clustering
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
department.sh>
2. Aggiungi queste istruzioni allo script:
#!/bin/bash DEPARTMENT='Electronics and Communication' echo -n 'Your DEPARTMENT is ' case $DEPARTMENT in 'Computer Science') echo -n 'Computer Science' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication' ;; *) echo -n 'Invalid' ;; esac>
3. Ciascuna delle linee è stata discussa di seguito:
- La prima riga nello script inizia con lo shebang (#!).
- Indica al sistema operativo di utilizzare un particolare interprete per analizzare lo script.
- Abbiamo inizializzato una variabile DEPARTMENT come Elettronica e Comunicazione.
- Ora stiamo usando un'istruzione case.
- Ogni espressione è stata gestita tramite l'istruzione case.
- L'ultima riga, esac, è stata utilizzata per terminare l'istruzione case.
4. Salva lo script e rendilo eseguibile.
chmod +x department.sh>
5. Esegui lo script.
./department.sh>
Produzione:
Esempio 3: per Loop
In questo script, abbiamo assegnato il dipartimento a tre studenti di una classe nell'array DEPARTMENT. In altre parole, elaboreremo più di un'espressione descritta nella variabile DEPARTMENT. Per scorrere più espressioni, possiamo usare un ciclo for.
Puoi seguire le istruzioni riportate di seguito:
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
department.sh>
2. Aggiungi queste istruzioni allo script:
#!/bin/bash DEPARTMENT=('Electronics and Communication' 'Computer Science' 'Information Technology') for value in '${DEPARTMENT[@]}' do case $value in 'Computer Science') echo -n 'Computer Science ' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering ' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication ' ;; *) echo -n 'Invalid ' ;; esac done> 3. Ciascuna delle righe è descritta di seguito:
- La prima riga nello script inizia con lo shebang (#!).
- Indica al sistema operativo di utilizzare un particolare interprete per analizzare lo script.
- Abbiamo inizializzato un array DEPARTMENT con tre stringhe letterali.
- Ora, con l'aiuto di un ciclo for, stiamo iterando sull'array di elementi.
- Ogni espressione è stata gestita tramite l'istruzione case.
- L'ultima riga, esac, è stata utilizzata per terminare l'istruzione case.
4. Salva lo script e rendilo eseguibile.
chmod +x department.sh>
5. Esegui lo script.
./department.sh>
Produzione:

Esempio 4: richiedere all'utente Sì o No
Puoi seguire le istruzioni riportate di seguito:
Java se altro
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
department.sh>
2. Aggiungi queste istruzioni allo script:
#!/bin/bash echo -n 'Are you a student? [yes or no]: ' read response case $response in 'Y' | 'y' | 'YES' | 'Yes' | 'yes') echo -n 'Yes, I am a student.' ;; 'N' | 'n' | 'No' | 'NO' | 'no' | 'nO') echo -n 'No, I am not a student.'; ;; *) echo -n 'Invalid input' ;; esac>
3. Ciascuna riga è spiegata di seguito:
- La prima riga nello script inizia con lo shebang (#!).
- Indica al sistema operativo di utilizzare un particolare interprete per analizzare lo script.
- All'utente viene richiesto Sei uno studente? [sì o no].
- Ora l'utente fornisce una risposta tramite la tastiera.
- L'output della risposta è stato gestito tramite un'istruzione case.
- L'ultima riga, esac, è stata utilizzata per terminare l'istruzione case.
4. Salva lo script e rendilo eseguibile.
classe astratta Java
chmod +x department.sh>
5. Esegui lo script utilizzando il comando seguente.
./department.sh>
Produzione:

Esempio 5: invio di segnali a un processo
Puoi seguire le istruzioni riportate di seguito:
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
signals.sh>
2. Aggiungi queste istruzioni allo script:
#!/bin/bash if [ $# -lt 2 ] then echo 'Usage :Signalnumber PID' exit fi # Case statement # Signal number (expression) case '' in 1) echo 'Sending SIGHUP signal.....' kill -SIGHUP ;; 2) echo 'Sending SIGINT signal.....' kill -SIGINT ;; 3) echo 'Sending SIGQUIT signal.....' kill -SIGQUIT ;; 4) echo 'Sending SIGKILL signals.....' kill -SIGKILL ;; *) echo 'Signal number has not been processed' ;; esac> Una dichiarazione di caso negli script bash viene utilizzato quando è necessario prendere una decisione rispetto a più scelte. In altre parole, è utile quando un'espressione ha la possibilità di avere più valori. Questa metodologia può essere vista come una sostituzione di più istruzioni if in uno script. Le istruzioni case hanno un vantaggio rispetto alle istruzioni if perché migliorano la leggibilità del nostro codice e sono più facili da mantenere. Le istruzioni Case in uno script Bash sono abbastanza simili alle istruzioni Case nel linguaggio C. Ma a differenza di C, l'istruzione Bash Case smette di continuare la ricerca non appena si verifica la corrispondenza. In parole semplici, non richiedono alcuna istruzione break obbligatoria da utilizzare in C per interrompere ulteriormente la ricerca di un pattern.
La sintassi di base di un'istruzione case è riportata di seguito,
Sintassi:
case EXPRESSION in Pattern_Case_1) STATEMENTS ;; Pattern_Case_1) STATEMENTS ;; Pattern_Case_N) STATEMENTS ;; *) STATEMENTS ;; esac>Ecco come funziona la dichiarazione del caso:
EXPRESSION>è la variabile o il valore che viene valutato rispetto a diversi modelli (casi) per trovare una corrispondenza.- L'istruzione case inizia con la parola chiave
case>seguito dalEXPRESSION>da valutare.- Ogni caso è definito da a
Pattern_Case>che rappresenta un valore o modello specifico da confrontare conEXPRESSION>.- Dopo ogni
Pattern_Case>, ci sono istruzioni da eseguire se ilEXPRESSION>corrisponde allo specificoPattern_Case>. Queste affermazioni sono indicate conSTATEMENTS>.- IL
;;>alla fine di ciascunoSTATEMENTS>block indica la fine di un blocco di casi.- IL
*)>è un caso speciale noto come caso predefinito. Se nessuno dei modelli precedenti corrisponde aEXPRESSION>, ILSTATEMENTS>sotto il*)>il blocco verrà eseguito.- IL
esac>La parola chiave segna la fine dell'istruzione case.
- Nel caso in cui non venga trovato alcun modello, lo stato di reso è zero. Altrimenti, lo stato restituito è lo stato di uscita del corpo eseguito del caso del modello corrispondente.
- Come C fornisce la parola chiave predefinita per l'istruzione predefinita, allo stesso modo nell'istruzione case Bash, possiamo utilizzare il simbolo asterisco jolly (*) e definire un modello finale caso per definire il caso predefinito.
Esempio 1: output di una descrizione per ciascuna opzione
In questo esempio uno script consente all'utente di selezionare un dipartimento e mostra una descrizione corrispondente all'input con l'aiuto di un comando echo. In questo script, abbiamo assegnato la variabile DEPARTMENT come Informatica. Pertanto, viene eseguito il corpo del primo pattern case.
Puoi seguire le istruzioni riportate di seguito:
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
department.sh>2. Aggiungi queste istruzioni allo script:
#!/bin/bash DEPARTMENT='Computer Science' echo -n 'Your DEPARTMENT is ' case $DEPARTMENT in 'Computer Science') echo -n 'Computer Science' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication' ;; *) echo -n 'Invalid' ;; esac>3. Ciascuna delle righe è descritta di seguito:
- La prima riga nello script inizia con lo shebang (#!).
- Indica al sistema operativo di utilizzare un particolare interprete per analizzare lo script.
- Abbiamo inizializzato una variabile DEPARTMENT come Informatica.
- Ora stiamo usando un'istruzione case.
- Ogni espressione è stata gestita tramite l'istruzione case.
- L'ultima riga, esac, è stata utilizzata per terminare l'istruzione case.
4. Salva lo script e rendilo eseguibile.
chmod +x department.sh>5. Esegui lo script.
./department.sh>Produzione:
Esempio 2: utilizzo di casi con modelli multipli
In ogni clausola possiamo utilizzare più casi modello. Se l'espressione corrisponde ad almeno un caso del modello, viene eseguito il corpo della clausola. In questo script, abbiamo assegnato la variabile DEPARTMENT come Elettronica e Comunicazioni. Il terzo caso del modello ha due valori separati dall'operatore barra verticale ( | ). Pertanto, viene eseguito il corpo del terzo pattern case.
Puoi seguire le istruzioni riportate di seguito:
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
department.sh>2. Aggiungi queste istruzioni allo script:
#!/bin/bash DEPARTMENT='Electronics and Communication' echo -n 'Your DEPARTMENT is ' case $DEPARTMENT in 'Computer Science') echo -n 'Computer Science' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication' ;; *) echo -n 'Invalid' ;; esac>3. Ciascuna delle linee è stata discussa di seguito:
- La prima riga nello script inizia con lo shebang (#!).
- Indica al sistema operativo di utilizzare un particolare interprete per analizzare lo script.
- Abbiamo inizializzato una variabile DEPARTMENT come Elettronica e Comunicazione.
- Ora stiamo usando un'istruzione case.
- Ogni espressione è stata gestita tramite l'istruzione case.
- L'ultima riga, esac, è stata utilizzata per terminare l'istruzione case.
4. Salva lo script e rendilo eseguibile.
chmod +x department.sh>5. Esegui lo script.
./department.sh>Produzione:
Esempio 3: per Loop
In questo script, abbiamo assegnato il dipartimento a tre studenti di una classe nell'array DEPARTMENT. In altre parole, elaboreremo più di un'espressione descritta nella variabile DEPARTMENT. Per scorrere più espressioni, possiamo usare un ciclo for.
Puoi seguire le istruzioni riportate di seguito:
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
department.sh>2. Aggiungi queste istruzioni allo script:
#!/bin/bash DEPARTMENT=('Electronics and Communication' 'Computer Science' 'Information Technology') for value in '${DEPARTMENT[@]}' do case $value in 'Computer Science') echo -n 'Computer Science ' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering ' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication ' ;; *) echo -n 'Invalid ' ;; esac done>3. Ciascuna delle righe è descritta di seguito:
- La prima riga nello script inizia con lo shebang (#!).
- Indica al sistema operativo di utilizzare un particolare interprete per analizzare lo script.
- Abbiamo inizializzato un array DEPARTMENT con tre stringhe letterali.
- Ora, con l'aiuto di un ciclo for, stiamo iterando sull'array di elementi.
- Ogni espressione è stata gestita tramite l'istruzione case.
- L'ultima riga, esac, è stata utilizzata per terminare l'istruzione case.
4. Salva lo script e rendilo eseguibile.
chmod +x department.sh>5. Esegui lo script.
./department.sh>Produzione:
Esempio 4: richiedere all'utente Sì o No
Puoi seguire le istruzioni riportate di seguito:
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
department.sh>2. Aggiungi queste istruzioni allo script:
#!/bin/bash echo -n 'Are you a student? [yes or no]: ' read response case $response in 'Y' | 'y' | 'YES' | 'Yes' | 'yes') echo -n 'Yes, I am a student.' ;; 'N' | 'n' | 'No' | 'NO' | 'no' | 'nO') echo -n 'No, I am not a student.'; ;; *) echo -n 'Invalid input' ;; esac>3. Ciascuna riga è spiegata di seguito:
- La prima riga nello script inizia con lo shebang (#!).
- Indica al sistema operativo di utilizzare un particolare interprete per analizzare lo script.
- All'utente viene richiesto Sei uno studente? [sì o no].
- Ora l'utente fornisce una risposta tramite la tastiera.
- L'output della risposta è stato gestito tramite un'istruzione case.
- L'ultima riga, esac, è stata utilizzata per terminare l'istruzione case.
4. Salva lo script e rendilo eseguibile.
chmod +x department.sh>5. Esegui lo script utilizzando il comando seguente.
./department.sh>Produzione:
Esempio 5: invio di segnali a un processo
Puoi seguire le istruzioni riportate di seguito:
1. Apri il terminale (Ctrl + Alt + T) e crea lo script:
signals.sh>2. Aggiungi queste istruzioni allo script:
#!/bin/bash if [ $# -lt 2 ] then echo 'Usage : $0 Signalnumber PID' exit fi # Case statement # Signal number (expression) case '$1' in 1) echo 'Sending SIGHUP signal.....' kill -SIGHUP $2 ;; 2) echo 'Sending SIGINT signal.....' kill -SIGINT $2 ;; 3) echo 'Sending SIGQUIT signal.....' kill -SIGQUIT $2 ;; 4) echo 'Sending SIGKILL signals.....' kill -SIGKILL $2 ;; *) echo 'Signal number $1 has not been processed' ;; esac>3. Ciascuna riga è spiegata di seguito:
- $1 è il numero del segnale e $2 è l'ID del processo.
- Per passare o inviare un segnale al dato ID di processo stiamo usando il comando kill.
- Questo eseguirà il comando di sospensione per alcuni secondi.
- Il corpo dell'ultimo confronto opzionale *) verrà eseguito nel caso predefinito.
4. Salva lo script.
5. Esegui lo script utilizzando il comando seguente.
./signals.sh>Produzione:
$ sleep 10000 $ ps -a | grep sleep 23277 pts/2 00:00:00 sleep $ ./signals.sh 9 31231 Sending SIGKILL signal $ sleep 10000 Killed>
3. Ciascuna riga è spiegata di seguito:
- è il numero del segnale e è l'ID del processo.
- Per passare o inviare un segnale al dato ID di processo stiamo usando il comando kill.
- Questo eseguirà il comando di sospensione per alcuni secondi.
- Il corpo dell'ultimo confronto opzionale *) verrà eseguito nel caso predefinito.
4. Salva lo script.
5. Esegui lo script utilizzando il comando seguente.
./signals.sh>
Produzione:
$ sleep 10000 $ ps -a | grep sleep 23277 pts/2 00:00:00 sleep $ ./signals.sh 9 31231 Sending SIGKILL signal $ sleep 10000 Killed>
Esempio 3: per Loop