Comment utiliser la déclaration de cas bash

Comment utiliser la déclaration de cas bash

L'instruction de cas est généralement utilisée dans Bash lorsque vous avez plusieurs choix à sélectionner. L'utiliser au lieu des instructions IF-Else imbriquées aide à garder vos scripts bash plus faciles à lire et à entretenir.

La déclaration de cas bash a été conçue similaire à l'énoncé de cas de JavaScript et C. Contrairement à l'instruction Switch de C, l'instruction BASH Case arrête de rechercher d'autres matchs dès qu'il en trouve un et termine les instructions qui sont écrites pour le modèle.

Dans ce guide, nous expliquerons comment vous pouvez utiliser la déclaration de cas bash en utilisant deux exemples et certains scénarios dans Ubuntu 22.04.

Syntaxe de l'énoncé de cas

Si vous souhaitez comprendre comment utiliser l'instruction Case, vous devez comprendre la syntaxe. Cela ressemble à ceci:

cas $ variable dans
Pattern1)
commandes
;;
Pattern2)
commandes
;;
Patternn)
commandes
;;
*)
commandes
;;
ESAC

Décomposons-le:

  • Il est impératif que vous ouvriez la déclaration avec le mot-clé «cas» et que vous le fermez avec le mot-clé «ESAC».
  • Nous utilisons le support de clôture «)» pour terminer un motif.
  • Les modèles contenant des commandes sont appelés clauses et ils se terminent par «;;».
  • Vous pouvez utiliser un «*» (astérisque) pour définir un cas par défaut.
  • Lorsque la commande Case correspond à la variable d'entrée avec les motifs définis, sur une correspondance, l'ensemble correspondant de code de commandes est exécuté jusqu'aux doubles semi-semi-colonnes.
  • Si vous souhaitez que la même commande soit exécutée pour plusieurs modèles, vous pouvez utiliser l'opérateur de tuyau pour assembler les modèles en tant que tel:
cas $ variable dans
Pattern1 | Pattern2)
commandes
;;
Pattern3 | Pattern4)
commandes
;;

Maintenant, jetons un coup d'œil à quelques exemples pour mieux comprendre cette syntaxe.

Vacances dans un mois

Pour notre premier exemple, écrivons un script qui prend un mois comme contribution de l'utilisateur et répond par des vacances internationales qui tombent dans le mois. Le "shopt -s nocasematch"La commande permet à votre script d'ignorer le cas de l'entrée et de le faire correspondre avec les cas, indépendamment de cela.

#!/ bac / bash
# Code pour ignorer les restrictions de cas
shopt -s nocasematch
Déclaration #case
Echo "Veuillez saisir le nom d'un mois"
lire le mois
cas $ mois en
Janvier)
Echo "18 janvier est la Journée nationale du thésaurus"
;;
Février)
Echo "20 février est la Journée mondiale de la justice sociale"
;;
Mars)
Echo "29 mars est la petite journée du wagon rouge."
;;
Avril)
Echo "Le 1er avril est la Journée internationale du combat des oreillers"
;;
*)
Echo "Impossible de trouver de vacances dans votre mois spécifié"
ESAC

Dans ce script, nous prenons le nom d'un mois de l'utilisateur et le stockons dans une variable nommée «mois». Ensuite, en utilisant l'énoncé de cas, nous comparons l'entrée avec certains mois présélectionnés, puis affichons les vacances respectives. Vous pouvez voir que si le code ne trouve aucune correspondance dans les cas définis, il a alors un écho en dehors des cas pour afficher un autre message. Et après cela, nous fermons la structure du code de cas avec le mot-clé «ESAC».

Enregistrez le fichier de script et sortez de l'éditeur Nano. Exécutez le script à l'aide de la commande suivante:

$ Bash Mois.shot

Vous pouvez voir que le code a répondu avec les vacances pertinentes pour l'entrée qui a été traitée avec les cas, et a répondu avec inconnu lorsque l'entrée était hors de portée des cas programmés.

La langue officielle d'un pays

Écrivons un script qui utilise les cas composites. Pour cet exemple, écrivons un script qui prend un pays et imprime la langue officielle de ce pays.

#!/ bac / bash
# Code pour ignorer les restrictions de cas
shopt -s nocasematch
Déclaration #case
Echo "Entrez dans un pays:"
lire le pays
Echo "La langue officielle de $ Country est"
cas $ country en
Amérique | Londres)
écho "anglais"
;;
Brésil | Portugal | Mexique)
écho "espagnol"
;;
Chine | Singapour | Taïwan)
écho "mandarin"
;;
*)
écho "inconnu"
;;
ESAC

Déclaration de cas avec des entiers

Vous pouvez également créer les cas où vous devez également faire correspondre l'entrée avec des entiers. Créons un script qui prend l'entrée des utilisateurs dans la plage de 1-10, puis affiche si le numéro est uniforme ou impair.

#!/ bac / bash
Déclaration #case
Echo "Entrez un nombre de 1 à 10:"
Lire Num
cas $ num dans
«1» | «3» | «5» | «7» | «9»)
Echo "Votre entrée est un nombre impair"
;;
«2» | «4» | «6» | «8» | "dix")
Echo «Votre entrée est un numéro pair»
;;
*)
Echo «Votre entrée est en dehors de la plage requise»
;;
ESAC

L'exécution de ce script vous donne la sortie suivante:

Vous pouvez également tester avec les autres numéros.

Déclaration de cas avec Loop

Vous pouvez utiliser l'instruction de cas dans les boucles pour les boucles si vous souhaitez vérifier plusieurs valeurs d'entrée par rapport à vos cas définis. Illustrons ce cas en écrivant un script qui passe par tous les fichiers dans le répertoire actuel et affichez leur type de fichier.

#!/ bac / bash
# pour chaque fichier du répertoire actuel
pour le dossier dans $ (ls)
faire
#Extraitez l'extension de fichier
Extension = $ fichier ## *.
cas «$ extension» dans
sh)
Echo "Fichier de script bash: fichier $"
;;
png)
Echo "Fichier d'image PNG: fichier $"
;;
SMS)
ECHO "Fichier texte: fichier $"
;;
*)
écho «fichier inconnu»
;;
ESAC
fait

L'exécution de ce script passe par chaque fichier dans l'actuel Active Directory et l'affiche avec son type de fichier (seulement les cas que nous avons spécifiés). Comme vous pouvez le voir, lors de l'exécution de ce script que nous n'avons qu'un seul fichier dans le répertoire actuel, il l'affiche avec l'extension.

Conclusion

Revenir à votre code plus ancien et déterminer quelle ligne peut être une tâche très lourde, surtout si elle a été écrite par quelqu'un d'autre. L'ajouter est encore plus difficile. L'utilisation de l'instruction de cas dans vos scripts bash peut vous faciliter la facilité de maintenir lisible par la syntaxe facile.

Comme démontré avec les exemples, vous pouvez l'utiliser avec des chaînes, des chaînes multiples, des entiers et pour les boucles, entre autres. Vous pouvez même gérer les codes de sortie pour votre programme avec des instructions de cas. C'est très polyvalent.

Si vous rencontrez des problèmes en utilisant la déclaration de cas, n'hésitez pas à nous engager et nous vous aiderons avec plaisir.