Un exposé de cas dans les scripts bash, il est utilisé lorsqu'une décision doit être prise contre plusieurs choix. En d’autres termes, cela est utile lorsqu’une expression a la possibilité d’avoir plusieurs valeurs. Cette méthodologie peut être considérée comme un remplacement de plusieurs instructions if dans un script. Les instructions Case ont un avantage sur les instructions if car elles améliorent la lisibilité de notre code et elles sont plus faciles à maintenir. Les instructions Case dans un script Bash sont assez similaires aux instructions Case en langage C. Mais contrairement à C, l'instruction Bash Case arrête de poursuivre la recherche dès que la correspondance se produit. En termes simples, ils ne nécessitent aucune instruction break qui doit être utilisée en C pour arrêter de rechercher davantage un modèle.
La syntaxe de base d'une instruction case est donnée ci-dessous,
Syntaxe:
chaîne de liste java
case EXPRESSION in Pattern_Case_1) STATEMENTS ;; Pattern_Case_1) STATEMENTS ;; Pattern_Case_N) STATEMENTS ;; *) STATEMENTS ;; esac>
Voici comment fonctionne l’instruction case :
EXPRESSION>est la variable ou la valeur qui est évaluée par rapport à différents modèles (cas) pour trouver une correspondance.- L'instruction case commence par le mot-clé
case>suivi duEXPRESSION>Pour être évalué. - Chaque cas est défini par un
Pattern_Case>qui représente une valeur ou un modèle spécifique à comparer avec leEXPRESSION>. - Après chaque
Pattern_Case>, il y a des instructions à exécuter si leEXPRESSION>correspond au spécifiquePattern_Case>. Ces déclarations sont désignées parSTATEMENTS>. - Le
;;>à la fin de chaqueSTATEMENTS>block indique la fin d’un bloc de cas. - Le
*)>est un cas particulier appelé cas par défaut. Si aucun des modèles précédents ne correspond auEXPRESSION>, leSTATEMENTS>sous le*)>Le bloc sera exécuté. - Le
esac>Le mot-clé marque la fin de l'instruction case.
- Si aucun modèle ne correspond, le statut de retour est zéro. Sinon, l'état de retour est l'état de sortie du corps exécuté du cas de modèle correspondant.
- Comme C fournit le mot-clé default pour l'instruction par défaut, de même dans l'instruction Bash case, nous pouvons utiliser le symbole astérisque générique (*) et définir un cas de modèle final pour définir le cas par défaut.
Exemple 1 : générer une description pour chaque option
Dans cet exemple, un script permet à l'utilisateur de sélectionner un département et affiche une description correspondant à l'entrée à l'aide d'une commande echo. Dans ce script, nous avons attribué à la variable DEPARTMENT la valeur Informatique. Ainsi, le corps du premier cas de modèle est exécuté.
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
department.sh>
2. Ajoutez ces instructions au 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. Chacune des lignes est décrite ci-dessous :
- La première ligne du script commence par le shebang (#!).
- Il demande au système d'exploitation d'utiliser un interpréteur particulier pour analyser le script.
- Nous avons initialisé une variable DEPARTMENT en tant qu'Informatique.
- Maintenant, nous utilisons une instruction case.
- Chaque expression a été traitée via l'instruction case.
- La dernière ligne, esac, a été utilisée pour terminer l'instruction case.
4. Enregistrez le script et rendez-le exécutable.
chmod +x department.sh>
5. Exécutez le script.
./department.sh>
Sortir:

Exemple 2 : Utilisation de cas de modèles multiples
Dans chaque clause, nous pouvons utiliser plusieurs cas modèles. Si l'expression correspond à au moins un cas de modèle, le corps est exécuté de la clause. Dans ce script, nous avons attribué la variable DEPARTMENT comme Electronique et Communication. Le troisième cas de modèle a deux valeurs séparées par l'opérateur pipe ( | ). Ainsi, le corps du troisième cas de modèle est exécuté.
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
department.sh>
2. Ajoutez ces instructions au 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. Chacune des lignes a été discutée ci-dessous :
ensembles en java
- La première ligne du script commence par le shebang (#!).
- Il demande au système d'exploitation d'utiliser un interpréteur particulier pour analyser le script.
- Nous avons initialisé une variable DEPARTMENT comme Electronique et Communication.
- Maintenant, nous utilisons une instruction case.
- Chaque expression a été traitée via l'instruction case.
- La dernière ligne, esac, a été utilisée pour terminer l'instruction case.
4. Enregistrez le script et rendez-le exécutable.
chmod +x department.sh>
5. Exécutez le script.
./department.sh>
Sortir:
Exemple 3 : pour les boucles
Dans ce script, nous avons assigné le département à trois étudiants d'une classe dans un tableau DEPARTMENT. En d’autres termes, nous allons traiter plusieurs expressions décrites dans la variable DEPARTMENT. Pour parcourir plusieurs expressions, nous pouvons utiliser une boucle for.
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
department.sh>
2. Ajoutez ces instructions au 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. Chacune des lignes est décrite ci-dessous :
- La première ligne du script commence par le shebang (#!).
- Il demande au système d'exploitation d'utiliser un interpréteur particulier pour analyser le script.
- Nous avons initialisé un tableau DEPARTMENT avec trois chaînes littérales.
- Maintenant, à l’aide d’une boucle for, nous parcourons le tableau d’éléments.
- Chaque expression a été traitée via l'instruction case.
- La dernière ligne, esac, a été utilisée pour terminer l'instruction case.
4. Enregistrez le script et rendez-le exécutable.
chmod +x department.sh>
5. Exécutez le script.
./department.sh>
Sortir:

Exemple 4 : inviter l'utilisateur à répondre oui ou non
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
department.sh>
2. Ajoutez ces instructions au 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. Chacune des lignes est expliquée ci-dessous :
- La première ligne du script commence par le shebang (#!).
- Il demande au système d'exploitation d'utiliser un interpréteur particulier pour analyser le script.
- L'utilisateur est invité à répondre : Êtes-vous étudiant ? [Oui ou non].
- Désormais, une réponse est donnée par l'utilisateur via le clavier.
- La sortie de la réponse a été gérée via une instruction case.
- La dernière ligne, esac, a été utilisée pour terminer l'instruction case.
4. Enregistrez le script et rendez-le exécutable.
chmod +x department.sh>
5. Exécutez le script à l'aide de la commande ci-dessous.
logo java
./department.sh>
Sortir:

Exemple 5 : Envoi d'un signal à un processus
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
signals.sh>
2. Ajoutez ces instructions au 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> Un exposé de cas dans les scripts bash, il est utilisé lorsqu'une décision doit être prise contre plusieurs choix. En d’autres termes, cela est utile lorsqu’une expression a la possibilité d’avoir plusieurs valeurs. Cette méthodologie peut être considérée comme un remplacement de plusieurs instructions if dans un script. Les instructions Case ont un avantage sur les instructions if car elles améliorent la lisibilité de notre code et elles sont plus faciles à maintenir. Les instructions Case dans un script Bash sont assez similaires aux instructions Case en langage C. Mais contrairement à C, l'instruction Bash Case arrête de poursuivre la recherche dès que la correspondance se produit. En termes simples, ils ne nécessitent aucune instruction break qui doit être utilisée en C pour arrêter de rechercher davantage un modèle.
La syntaxe de base d'une instruction case est donnée ci-dessous,
Syntaxe:
case EXPRESSION in Pattern_Case_1) STATEMENTS ;; Pattern_Case_1) STATEMENTS ;; Pattern_Case_N) STATEMENTS ;; *) STATEMENTS ;; esac>Voici comment fonctionne l’instruction case :
EXPRESSION>est la variable ou la valeur qui est évaluée par rapport à différents modèles (cas) pour trouver une correspondance.- L'instruction case commence par le mot-clé
case>suivi duEXPRESSION>Pour être évalué.- Chaque cas est défini par un
Pattern_Case>qui représente une valeur ou un modèle spécifique à comparer avec leEXPRESSION>.- Après chaque
Pattern_Case>, il y a des instructions à exécuter si leEXPRESSION>correspond au spécifiquePattern_Case>. Ces déclarations sont désignées parSTATEMENTS>.- Le
;;>à la fin de chaqueSTATEMENTS>block indique la fin d’un bloc de cas.- Le
*)>est un cas particulier appelé cas par défaut. Si aucun des modèles précédents ne correspond auEXPRESSION>, leSTATEMENTS>sous le*)>Le bloc sera exécuté.- Le
esac>Le mot-clé marque la fin de l'instruction case.
- Si aucun modèle ne correspond, le statut de retour est zéro. Sinon, l'état de retour est l'état de sortie du corps exécuté du cas de modèle correspondant.
- Comme C fournit le mot-clé default pour l'instruction par défaut, de même dans l'instruction Bash case, nous pouvons utiliser le symbole astérisque générique (*) et définir un cas de modèle final pour définir le cas par défaut.
Exemple 1 : générer une description pour chaque option
Dans cet exemple, un script permet à l'utilisateur de sélectionner un département et affiche une description correspondant à l'entrée à l'aide d'une commande echo. Dans ce script, nous avons attribué à la variable DEPARTMENT la valeur Informatique. Ainsi, le corps du premier cas de modèle est exécuté.
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
department.sh>2. Ajoutez ces instructions au 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. Chacune des lignes est décrite ci-dessous :
- La première ligne du script commence par le shebang (#!).
- Il demande au système d'exploitation d'utiliser un interpréteur particulier pour analyser le script.
- Nous avons initialisé une variable DEPARTMENT en tant qu'Informatique.
- Maintenant, nous utilisons une instruction case.
- Chaque expression a été traitée via l'instruction case.
- La dernière ligne, esac, a été utilisée pour terminer l'instruction case.
4. Enregistrez le script et rendez-le exécutable.
chmod +x department.sh>5. Exécutez le script.
./department.sh>Sortir:
Exemple 2 : Utilisation de cas de modèles multiples
Dans chaque clause, nous pouvons utiliser plusieurs cas modèles. Si l'expression correspond à au moins un cas de modèle, le corps est exécuté de la clause. Dans ce script, nous avons attribué la variable DEPARTMENT comme Electronique et Communication. Le troisième cas de modèle a deux valeurs séparées par l'opérateur pipe ( | ). Ainsi, le corps du troisième cas de modèle est exécuté.
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
department.sh>2. Ajoutez ces instructions au 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. Chacune des lignes a été discutée ci-dessous :
- La première ligne du script commence par le shebang (#!).
- Il demande au système d'exploitation d'utiliser un interpréteur particulier pour analyser le script.
- Nous avons initialisé une variable DEPARTMENT comme Electronique et Communication.
- Maintenant, nous utilisons une instruction case.
- Chaque expression a été traitée via l'instruction case.
- La dernière ligne, esac, a été utilisée pour terminer l'instruction case.
4. Enregistrez le script et rendez-le exécutable.
chmod +x department.sh>5. Exécutez le script.
./department.sh>Sortir:
Exemple 3 : pour les boucles
Dans ce script, nous avons assigné le département à trois étudiants d'une classe dans un tableau DEPARTMENT. En d’autres termes, nous allons traiter plusieurs expressions décrites dans la variable DEPARTMENT. Pour parcourir plusieurs expressions, nous pouvons utiliser une boucle for.
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
department.sh>2. Ajoutez ces instructions au 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. Chacune des lignes est décrite ci-dessous :
- La première ligne du script commence par le shebang (#!).
- Il demande au système d'exploitation d'utiliser un interpréteur particulier pour analyser le script.
- Nous avons initialisé un tableau DEPARTMENT avec trois chaînes littérales.
- Maintenant, à l’aide d’une boucle for, nous parcourons le tableau d’éléments.
- Chaque expression a été traitée via l'instruction case.
- La dernière ligne, esac, a été utilisée pour terminer l'instruction case.
4. Enregistrez le script et rendez-le exécutable.
chmod +x department.sh>5. Exécutez le script.
./department.sh>Sortir:
Exemple 4 : inviter l'utilisateur à répondre oui ou non
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
department.sh>2. Ajoutez ces instructions au 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. Chacune des lignes est expliquée ci-dessous :
- La première ligne du script commence par le shebang (#!).
- Il demande au système d'exploitation d'utiliser un interpréteur particulier pour analyser le script.
- L'utilisateur est invité à répondre : Êtes-vous étudiant ? [Oui ou non].
- Désormais, une réponse est donnée par l'utilisateur via le clavier.
- La sortie de la réponse a été gérée via une instruction case.
- La dernière ligne, esac, a été utilisée pour terminer l'instruction case.
4. Enregistrez le script et rendez-le exécutable.
chmod +x department.sh>5. Exécutez le script à l'aide de la commande ci-dessous.
./department.sh>Sortir:
Exemple 5 : Envoi d'un signal à un processus
Vous pouvez suivre les instructions ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T) et créez le script :
signals.sh>2. Ajoutez ces instructions au 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. Chacune des lignes est expliquée ci-dessous :
- $1 est le numéro du signal et $2 est l'identifiant du processus.
- Pour transmettre ou envoyer un signal à l'identifiant de processus donné, nous utilisons la commande kill.
- Cela exécutera la commande sleep pendant quelques secondes.
- Le corps de la dernière comparaison facultative *) sera exécuté dans le cas par défaut.
4. Enregistrez le script.
5. Exécutez le script à l'aide de la commande ci-dessous.
./signals.sh>Sortir:
$ sleep 10000 $ ps -a | grep sleep 23277 pts/2 00:00:00 sleep $ ./signals.sh 9 31231 Sending SIGKILL signal $ sleep 10000 Killed>
3. Chacune des lignes est expliquée ci-dessous :
- est le numéro du signal et est l'identifiant du processus.
- Pour transmettre ou envoyer un signal à l'identifiant de processus donné, nous utilisons la commande kill.
- Cela exécutera la commande sleep pendant quelques secondes.
- Le corps de la dernière comparaison facultative *) sera exécuté dans le cas par défaut.
4. Enregistrez le script.
5. Exécutez le script à l'aide de la commande ci-dessous.
./signals.sh>
Sortir:
$ sleep 10000 $ ps -a | grep sleep 23277 pts/2 00:00:00 sleep $ ./signals.sh 9 31231 Sending SIGKILL signal $ sleep 10000 Killed>
Exemple 3 : pour les boucles