GNU/Linux >> Tutoriels Linux >  >> Linux

Syntaxe de l'instruction bash case et exemples

Présentation

Le bash case est la forme la plus simple de l'instruction conditionnelle if elif else. Le case L'instruction simplifie les conditions complexes avec plusieurs choix différents. Cette déclaration est plus facile à maintenir et plus lisible que les if imbriqués déclarations.

Le case L'instruction teste la valeur d'entrée jusqu'à ce qu'elle trouve le modèle correspondant et exécute la commande liée à cette valeur d'entrée. Ainsi, c'est un excellent choix pour créer des menus où les utilisateurs sélectionnent une option qui déclenche une action correspondante.

Dans ce didacticiel, vous apprendrez le case bash énoncé bases et comment l'utiliser dans des scripts shell.

Prérequis

  • Une machine exécutant Linux.
  • Accès à la ligne de commande.
  • Un éditeur de texte tel que vi/vim.

Syntaxe d'instruction bash case

Le case bash prend la syntaxe suivante :

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

Le case l'instruction commence par la case mot-clé suivi de la $variable et le in mot-clé. L'instruction se termine par le case mot-clé à l'envers - esac .

$variable

  • Le script compare l'entrée $variable par rapport aux modèles de chaque clause jusqu'à ce qu'il trouve une correspondance.

Modèles

  • Un modèle et ses commandes forment une clause , qui se termine par ;; .
  • Les modèles prennent en charge les caractères spéciaux.
  • Le ) l'opérateur termine une liste de motifs.
  • Le | l'opérateur sépare plusieurs motifs.
  • Le script exécute les commandes correspondant au premier modèle correspondant à l'entrée $variable .
  • L'astérisque * Le symbole définit la casse par défaut, généralement dans le modèle final.

État de sortie

Le script a deux statuts de sortie :

  • 0 . Le statut de retour lorsque l'entrée ne correspond à aucun modèle.
  • État de la commande exécutée . Si la commande fait correspondre la variable d'entrée à un modèle, l'état de sortie de la commande exécutée est renvoyé.

Exemples d'instructions de cas bash

Cette section montre des exemples pratiques d'utilisation du bash case déclaration.

Exemple 1 :Générer une description pour chaque option

L'exemple suivant est un script qui permet à l'utilisateur de choisir une couleur et affiche un commentaire correspondant à l'entrée à l'aide de la commande echo.

Suivez les instructions ci-dessous :

1. Ouvrez le terminal (Ctrl + Alt + T ) et créez le script :

vi color.sh

2. Ajoutez les lignes suivantes au 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

Chacune des lignes a le rôle suivant :

  • La première ligne de chaque script est généralement le shebang (#! ), qui indique au système d'exploitation quel interpréteur utiliser pour analyser le fichier.
  • Les lignes 2 à 7 sont le menu d'options présenté à l'utilisateur parmi lequel il peut choisir.
  • La read color; la variable demande à l'utilisateur une réponse et la stocke.
  • Le case L'instruction contient les réponses possibles qui correspondent à l'entrée de l'utilisateur. Dans cet exemple, la sortie est le echo sortie de la commande.
  • La dernière ligne, esac , termine le case déclaration.

3. Enregistrez le script et quittez vi avec la commande suivante :

:wq

4. Avant d'exécuter chaque script, assurez-vous de le modifier par chmod pour le rendre exécutable :

chmod +x color.sh

5. Exécutez le script :

./color.sh

Le script propose le menu des options et affiche un message différent selon l'option sélectionnée.

Exemple 2 :Utilisation de plusieurs modèles

Le case L'instruction permet d'utiliser plusieurs modèles dans chaque clause. Si l'expression correspond aux modèles spécifiés, le script exécute les commandes de cette clause.

Cet exemple de script invite l'utilisateur à entrer un mois et affiche le nombre de jours. Il y a trois réponses possibles :

  • 30 jours.
  • 31 jours.
  • 28 ou 29 jours pour février.

Suivez les étapes ci-dessous pour créer le script :

1. Créez le script mois.sh en lançant :

vi month.sh

2. Saisissez les lignes suivantes et enregistrez le 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

Dans l'exemple ci-dessus :

  • La shopt commande avec le -s nocasematch l'option réduit le risque d'erreur avec la correspondance de modèle insensible à la casse.
  • Le symbole du tuyau | sépare les modèles dans chacune des clauses.

3. Rendez le script exécutable :

chmod +x month.sh

4. Exécutez le script :

./month.sh

Le script ignore les différences de casse et génère le nombre correct de jours dans le mois sélectionné.

Exemple 3 :boucles for

Utilisez un for boucle en case lorsqu'il y a beaucoup d'expressions à traiter. Le script suivant renvoie tous les types de fichiers d'un répertoire.

Suivez les étapes ci-dessous :

1. Créez le script shell :

vi filelist.sh

2. Saisissez les lignes suivantes puis enregistrez le 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

Dans l'exemple ci-dessus :

  • Les ls commande extrait une liste de fichiers du répertoire.
  • Le for loop applique le fichier globbing pour extraire l'extension de chaque fichier.

3. Rendez le script exécutable :

chmod +x filelist.sh

4. Exécutez le script :

./filelist.sh

Le script identifie chaque type de fichier présent dans le répertoire courant.

Exemple 4 :créer un carnet d'adresses

Utilisez le case déclaration pour créer une base de données simple et générer rapidement les informations demandées. L'exemple suivant affiche le nom, l'adresse e-mail et l'adresse de la personne sélectionnée :

1. Créez le script :

vi phonebook.sh

2. Ajoutez les lignes suivantes et enregistrez le 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. Modifiez le script :

chmod +x phonebook.sh

3. Exécutez le script :

./phonebook.sh

Le script affiche les coordonnées de la personne sélectionnée. La sélection d'une option qui n'est pas répertoriée informe l'utilisateur que le contact n'existe pas.

Exemple 5 :Vérifier le type de caractère

L'exemple suivant montre comment utiliser le case pour vérifier le type de caractère saisi par l'utilisateur.

Suivez les étapes ci-dessous :

1. Créez le script :

vi character.sh

2. Ajoutez les lignes suivantes et enregistrez le 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

Dans l'exemple ci-dessus :

  • La $var la variable de contrôle stocke l'entrée.
  • Au lieu de saisir toutes les combinaisons possibles, utilisez les crochets [] pour désigner une plage de caractères. Utilisez des crochets doubles [[]] pour les plages POSIX. if-else nécessite la saisie de chaque condition de caractère individuellement.
  • Le ? caractère couvre les caractères qui ne sont pas des minuscules, des majuscules ou des chiffres. Il remplace un seul caractère, par opposition à * qui remplace tout le reste non couvert par les conditions ci-dessus.

3. Modifiez les autorisations pour rendre le script exécutable :

chmod +x character.sh

4. Exécutez le script :

./character.sh

La sortie indique le type de caractère saisi après l'avoir comparé aux conditions spécifiées.


Linux
  1. Comment programmer avec Bash :syntaxe et outils

  2. Bash For Loop Guide et exemples

  3. Instruction Bash If-Else avec des exemples

  4. Exemples de boucle Bash For et de boucle While

  5. 4 Exemples d'instructions Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

Bash Scripting - Déclaration de cas

Comment travailler avec l'instruction Case dans les scripts Bash

Syntaxe Bash If Else avec exemples

Comprendre Bash If Else et d'autres instructions conditionnelles

Tutoriel sur les variables Bash - 6 exemples pratiques de variables globales et locales Bash

Grep exemples sensibles à la casse et utilisation