Dans cet article, nous examinerons les instructions de cas bash et comment les utiliser dans les scripts bash. La déclaration de cas est un bash construit et est utilisé pour simplifier la logique conditionnelle dans les scripts bash.
[ Vous pourriez également aimer :Comment utiliser la commande Declare dans Linux Bash Shell ]
Pour le dire en termes simples, lorsque votre code a plusieurs conditionnels [ if - elif - else ]
instructions, vous pouvez remplacer les instructions conditionnelles par des instructions case. Le concept de l'instruction case est également disponible dans d'autres langages de programmation comme C, Perl, Java, Javascript, etc. Dans certaines langues, ce sera une instruction switch case et dans certaines langues, ce sera une instruction case, elle diffère selon à la langue que vous utilisez.
Comprendre la syntaxe de l'instruction de cas
Avant d'utiliser l'instruction case dans vos scripts, vous devez comprendre sa syntaxe.
expressioncase expression in pattern1) STATEMENTS ;; pattern2 | pattern3) STATEMENTS ;; pattern-N) STATEMENTS ;; *) STATEMENTS ;; esac
Explication de l'énoncé de cas ci-dessus.
- L'instruction case doit commencer par le mot-clé case et se terminer par esac mot-clé.
- L'instruction case évaluera une expression et trouvera si l'expression correspond à l'un des modèles. L'expression doit venir après le mot-clé case.
- Les motifs seront évalués et s'ils correspondent à l'expression, l'instruction sera exécutée. Les motifs et les instructions sont appelés clauses. Pour terminer une clause, utilisez un double point-virgule
";;"
. - Si un modèle correspond, les autres modèles sont ignorés.
- Vous pouvez créer autant de motifs que vous le souhaitez.
- Le symbole astérisque
(*)
sera utilisé comme motif par défaut. Si une expression ne correspond à aucun des modèles, le modèle par défaut sera utilisé.
Créer une déclaration de cas simple dans un script
Je crée une déclaration de cas simple qui affichera l'équipe qui a remporté la ligue des champions en fonction de l'année. L'utilisateur doit passer l'année comme entrée.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016) echo " Winner is Real Madrid";; 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac
Jetez un œil au code ci-dessus et à la sortie. L'utilisateur passe l'année comme entrée et stocké dans la variable GAGNANT . L'année sera évaluée par rapport à toutes les années indiquées comme modèles dans l'énoncé de cas. Si l'année passée par l'utilisateur ne correspond à aucun modèle modèle par défaut (*)
est utilisé.
Il est également possible d'évaluer plusieurs modèles dans une seule clause. Vous devez utiliser le "|"
symbole pour utiliser un ou plusieurs motifs dans une clause. Nous utiliserons le même code de l'exemple précédent. Si vous regardez les années 2016 et 2017, la même équipe a remporté la coupe. Au lieu de créer des clauses distinctes pour 2016 et 2017, vous pouvez créer une seule clause.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac
Désormais, lorsque l'utilisateur passe 2016 ou 2017 comme entrée, il sera évalué dans la première clause.
Vous pouvez également utiliser la correspondance de modèle dans les instructions case. Je modifie à nouveau le même code et j'ajoute deux autres clauses à évaluer pour les chaînes et les autres années.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; [a..z]* | [A..Z]*) echo " Year should be passed as argument. Input is wrong";; [0-9][0-9][0-9][0-9]) echo "No data for the passed year..." esac
Je vous suggère de jeter un œil à ~/.bashrc
fichier et fichiers sous /etc/init.d/ où l'instruction case sera utilisée. Parcourir ces fichiers vous donnera une idée de la façon dont il est utilisé en temps réel.
Voilà pour cet article. La déclaration de cas est un concept important à connaître lorsque vous travaillez avec des scripts shell. Lorsque vous commencerez à remplacer les instructions conditionnelles par des instructions de cas, votre code sera propre et maintenable.