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:
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.shotVous 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.