GNU/Linux >> Tutoriels Linux >  >> Linux

Comment travailler avec l'instruction Case dans les scripts Bash

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.

expression
case 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.


Linux
  1. Comment faire en sorte que Vim fonctionne correctement avec Tmux ?

  2. Comment configurer Bash pour qu'il exécute *.exe avec Mono ?

  3. Comment faire correspondre les modèles insensibles à la casse avec Ls ?

  4. Instruction Bash If-Else avec des exemples

  5. 5 exemples d'instructions Bash Case

Comment utiliser les instructions conditionnelles dans les scripts Bash

Comment créer des documents avec des scripts Bash

Comment travailler avec Ansible Provisioner dans Vagrant

Comment utiliser la commande echo dans les scripts Bash sous Linux

Comment travailler avec l'instruction Case dans les scripts Bash

Syntaxe Bash If Else avec exemples