Outils pour utilisateurs

Outils du site


cours:informatique:fun_mooc:maitrise_du_bash_univ-reunion:430_structures_conditionnelles

Bash: Structures conditionnelles

L’enchaînement conditionnel de commandes consiste à conditionner l’exécution d’une commande au résultat d’une autre. Selon le code retour d’une première expression, une autre sera ou ne sera pas exécutée.

cmd1 && cmd2 cmd2 n'est exécutée que lorsque cmd1 s'est terminée correctement (code retour 0)
cmd1 || cmd2 cmd2 n'est exécutée que lorsque cmd1 s'est terminée en erreur ( code retour différent de 0)

Structure if

La commande if permet une écriture à la fois plus lisible et des contrôles plus élaborés. Il s’agit de conditionner l’exécution d’une suite de commandes au résultat d’une condition.

if condition
then
   cmd1;
   cmd2;
   ...
else
  cmd1;
  cmd2;
  ...
fi
Pour que la structure if soit correctement interprétée par bash, il est nécessaire de respecter les retours à la ligne: le mot clé “if” suivi du test de condition puis retour à la ligne, mot clé “then” seul sur la ligne

Conditions imbriquées

Il est possible d'imbriquer les structures conditionnelles:

if condition-1
then
  lignes-commandes-si-vrai-1
else
  if condition-2
  then
    lignes-commandes-si-vrai-2
  else
    if condition-3
    then
      ...
    fi
  fi
fi

Pour s'implifier l'écriture de ce type d'imbrication, le bash permet de contracter un else suivi d'un if via le mot clé elif

if condition-1
then
  lignes-commandes-si-vrai-1
elif condition-2
then
  lignes-commandes-si-vrai-2
elif condition-3
then
  ...
fi

Structure case

La structure case peut être une bonne alternative aux if imbriqués dans le cas où il s’agit de tester une valeur et d’exécuter différentes commandes en fonction de cette valeur.

case expression in
motif1)
  lignes-commandes1;;
motif2)
  lignes-commandes2;;
  ...
motifN)
  lignes-commandesN;;
esac

L'expression est évaluée afin d'obtenir une chaîne de caractères. Celle-ci est comparée à chaque motif dans l'ordre. A la première correspondance, les commandes sont exécutées, le case s'arrête en retournant le code retour de la dernière commande.

Les motifs sont décrits avec la même syntaxe que la substitution de nom de fichier.

Si aucun des motifs ne correspond à la valeur de l’expression alors aucune commande n’est exécutée et le code retour de l’instruction case est 0. Toutefois s’il y a besoin d’exécuter des commandes dans le cas où aucun des motifs ne correspond on peut utiliser le motif * comme cas par défaut puisque celui-ci filtre n’importe quelle chaîne de caractères.

Si plusieurs cas doivent mener à l’exécution d’une même liste de commandes on peut écrire plusieurs motifs séparés par une barre verticale:

case expression in
motif1 | motif2 | motif3)
  lignes-commandes123;;
  ...
esac
cours/informatique/fun_mooc/maitrise_du_bash_univ-reunion/430_structures_conditionnelles.txt · Dernière modification : 2021/04/11 11:00 de 77.192.232.26