Structures conditionnelles

Objectifs

  • Comprendre la notion de structure conditionnelle

  • Savoir faire un if en Bash

  • Savoir utiliser elif et else

DéfinitionStructure conditionnelle

En programmation, une structure conditionnelle est une structure qui permet, dans un script ou un programme, d'exécuter des instructions en fonction de conditions basées sur les valeurs de variables.

Exemple

Voici un exemple rédigé (on parle d'un algorithme) d'une structure conditionnelle.

1
SI "mavariable" est plus grande que "12"
2
ALORS
3
  Afficher un message d'erreur
4
FIN SI

On comprends qu'une condition (« si mavariable est plus grande que 12 ») est évaluée, et si cette condition est validée alors on exécute l'instruction dans la structure (« Afficher un message d'erreur »).

Syntaxe

La même structure en Bash donne :

1
if [ $mavariable -gt 12 ]
2
then
3
  echo "Error"
4
fi

La partie se trouvant entre les crochets est donc la condition. On retrouve bien l'appel à mavariable (avec le symbole "$"), que l'on compare à la valeur 12. La comparaison se fait avec l'opérateur -gt, signifiant Greater Than, qui permet de valider que ce qui se trouve à gauche de l'opérateur est plus grand que ce qui se trouve à droite.

Attention

Une condition se trouve systématiquement entre crochets, avec un espace entre chaque crochet et la condition. Par exemple écrire [$mavariable -gt 12] n'est pas valide.

SyntaxeLes différentes conditions

Il existe de nombreux opérateur pour les conditions, voici quelques exemples pour les comparaison de variables contenant du texte.

$texte1 = $texte2

Vérifie que la variable texte1 contient la même chose que texte2

$texte1 != $texte2

Vérifie que les deux variables sont différentes

-z $texte

Vérifie si la variable est vide (pas de texte) ou inexistante.

-n $texte

Vérifie si la variable est non vide

D'autres permettent la comparaison de nombres.

$num1 -eq $num2

Vérifie que les 2 nombres sont égaux

$num1 -ne $num2

Vérifie que les 2 nombres ne sont pas égaux

$num1 -lt $num2

Vérifie si num1 est inférieur (<) à num2

$num1 -le $num2

Vérifie si num1 est inférieur ou égal (<=) à num2

$num1 -gt $num2

Vérifie si num1 est supérieur (>) à num2

$num1 -ge $num2

Vérifie si num1 est supérieur ou égal (>=) à num2

Enfin certains permettent de faire des tests sur des fichiers.

-e $nomfichier

Vérifie si le fichier existe

-d $nomfichier

Vérifie que le fichier est un répertoire.

-f $nomfichier

Vérifier que le fichier est un fichier (donc pas un répertoire)

MéthodeInversion de condition

Il est possible d'inverser une condition en utilisant la caractère de négation "!".

1
if [ ! $mavariable -gt 12 ]
2
then
3
  echo "Error"
4
fi

Ici l'instruction dans le bloc if ne sera exécutée que si mavariable n'est pas plus grande que 12. La condition est inversée.

MéthodeSinon

Il est possible de proposer une alternative si la condition première n'est pas respectée.

1
if [ $mavariable -gt 12 ]
2
then
3
  echo "Error"
4
else
5
  echo "Ok"
6
fi

Si la condition est validée on exécute l'instruction dans le bloc if, sinon on exécute celle du bloc else.

MéthodeSinon si

Il est possible de complexifier les conditions en ajoutant plusieurs alternatives conditionnelles avec le mot clef elif (contraction de else if).

1
if [ $mavariable -gt 12 ]
2
then
3
  echo "Error"
4
elif [ $mavariable -lt 5 ]
5
then
6
  echo "Perfect"
7
else
8
  echo "Ok"
9
fi
10

Si la variable est plus grande que 12, alors on affiche "Error", sinon si elle est plus petite que 5 on affiche "Perfect", sinon on affiche "Ok".

À retenir

Les conditions permettent de réaliser différentes instructions de manière conditionnelle. En fonction de la valeur de variables, on peut décider ou non d'exécuter une instruction, et de définir une ou plusieurs alternatives si la condition n'est pas respectée.