Scripting Shell · 8 min read · Nov 13, 2025

Scripting Shell Partie 3 : Structures de Contrôle de Décision dans les Scripts Shell

Salut ! Nous avons déjà couvert les bases du scripting shell telles que l’acceptation des entrées, le traitement des données par des opérations arithmétiques et la génération et l’affichage de la sortie dans les parties précédentes de ce tutoriel (partie 1 et partie 2). Dans cette partie, nous allons approfondir un sujet plus avancé dans un langage de programmation – prendre des décisions dans un programme, mais cette fois nous le ferons en utilisant le shell bash. Commençons !

Introduction

La plupart de nos langages de programmation aujourd’hui sont capables de prendre des décisions basées sur des conditions que nous définissons. Une condition est une expression qui évalue à une valeur booléenne - vraie ou fausse. Tout programmeur peut rendre son programme intelligent en fonction de la décision et de la logique qu’il intègre dans son programme. Le shell bash prend en charge les instructions de décision if et switch (case).

Instruction If

If est une instruction qui permet au programmeur de prendre une décision dans le programme en fonction des conditions qu’il a spécifiées. Si la condition est remplie, le programme exécutera certaines lignes de code, sinon, le programme exécutera d’autres tâches que le programmeur a spécifiées. La syntaxe prise en charge de l’instruction if dans le shell bash est la suivante.

Syntaxe Générale

Décision unique :

if   
 then  
     ### série de code ici  
 fi

Décision double :

if   
 then  
     ### série de code si la condition est satisfaite  
 else  
     ### série de code si la condition n'est pas satisfaite  
 fi

Condition if multiple :

if   
 then  
     ### série de code pour condition1  
 elif   
 then  
     ### série de code pour condition2  
 else  
     ### série de code si la condition n'est pas satisfaite  
 fi

Syntaxe à une seule parenthèse

if [ condition ]  
 then  
     ### série de code ici  
 fi

Syntaxe à double parenthèse

if ((condition))  
 then  
     ### série de code ici  
 fi

La syntaxe à une seule parenthèse est la plus ancienne syntaxe prise en charge dans le shell bash. Elle est utilisée avec toutes les instructions conditionnelles dans Linux. Pendant ce temps, la syntaxe à double parenthèse est utilisée pour une instruction conditionnelle basée sur des nombres afin de fournir une syntaxe familière aux programmeurs. Tous les types d’instructions if nécessitent une condition spécifiée afin d’exécuter une tâche.

Instructions Conditionnelles dans Linux

Les instructions conditionnelles sont utilisées avec une instruction de contrôle de décision. Il existe différents types d’instructions conditionnelles que vous pouvez utiliser dans le shell bash, les plus courantes étant : les conditions basées sur des fichiers, sur des chaînes et sur des arithmétiques.

Condition basée sur un fichier

Les conditions basées sur des fichiers sont des expressions unaires et sont souvent utilisées pour examiner l’état d’un fichier. La liste suivante montre les conditions basées sur des fichiers les plus couramment utilisées dans le shell bash.

OpérateurDescription
-a fichierRetourne vrai si le fichier existe
-b fichierRetourne vrai si le fichier existe et est un fichier spécial de bloc
-c fichierRetourne vrai si le fichier existe et est un fichier spécial de caractère
-d fichierRetourne vrai si le fichier existe et est un répertoire
-e fichierRetourne vrai si le fichier existe
-r fichierRetourne vrai si le fichier existe et est lisible
-s fichierRetourne vrai si le fichier existe et a une taille supérieure à zéro
-w fichierRetourne vrai si le fichier existe et est modifiable
-x fichierRetourne vrai si le fichier existe et est exécutable
-N fichierRetourne vrai si le fichier existe et a été modifié depuis sa dernière lecture

Prendre une décision basée sur un fichier

Prenons un exemple qui illustrera comment construire une décision basée sur un fichier dans un script bash. Dans cet exemple, nous allons créer un script qui détermine si le fichier existe dans le répertoire personnel.

#!/bin/bash  
   
cd   
 ls  
 if [ -e sample.sh ]   
 then   
     echo "le fichier existe !"   
 else   
     echo "le fichier n'existe pas"   
 fi

Prendre une décision basée sur un fichier

Dans cet exemple, nous avons veillé à ce que le shell retourne au répertoire personnel, peu importe notre répertoire actif actuel, en utilisant la commande cd. De plus, la commande ls est utilisée pour afficher la liste des fichiers dans le répertoire afin que nous puissions vérifier si le fichier existe réellement ou non. Comme vous pouvez le voir, le script affiche le texte “le fichier existe !” car le sample.sh est dans le répertoire personnel.

Remarque : Le compilateur de shell est très strict en termes de syntaxe, en particulier avec les espaces. Il doit y avoir un espace entre if et la parenthèse ouverte et entre les parenthèses et la condition.

Maintenant, améliorons notre script en rendant notre code plus dynamique en permettant à l’utilisateur d’entrer un nom de script et de déterminer les permissions du fichier donné.

#!/bin/bash  
   
cd  
 ls -l   
 read -p "Entrez un nom de fichier : " filename  
 if [ -e $filename ]   
 then   
     echo "le fichier existe !"   
     if [ -r $filename ]  
     then   
          status="lisible "   
     fi   
     if [ -w $filename ]   
     then   
          status=$status"modifiable "   
     fi   
     if [ -x $filename ]   
     then   
          status=$status"exécutable"   
     fi   
      echo "permissions du fichier : "$status   
 else   
     echo "le fichier n'existe pas"   
 fi

Prendre une décision dynamique basée sur un fichier

Condition basée sur une chaîne

Prendre des décisions basées sur une entrée utilisateur sous forme de chaîne est également possible dans le shell bash. La condition basée sur une chaîne retourne une expression binaire en résultat, ce qui signifie qu’elle retourne vrai si la condition spécifiée est satisfaite, sinon, elle retourne faux. Les opérateurs conditionnels basés sur des chaînes les plus couramment utilisés sont :

OpérateurDescription
==Retourne vrai si les chaînes sont égales
!=Retourne vrai si les chaînes ne sont pas égales
-nRetourne vrai si la chaîne à tester n’est pas nulle
-zRetourne vrai si la chaîne à tester est nulle

Créons un script d’exemple utilisant une instruction conditionnelle basée sur des chaînes. Le script permettra à l’utilisateur d’entrer deux chaînes et d’évaluer si l’une des chaînes est nulle, si les deux chaînes sont égales ou non.

#!/bin/bash   
   
read -p "Première Chaîne : " str1   
 read -p "Deuxième Chaîne : " str2   
 if [ -z "$str1" ]   
 then   
     echo "La 1ère chaîne est nulle"   
 elif [ -z "$str2" ]   
 then   
     echo "La 2ème chaîne est nulle"   
 else   
     if [ $str1 == $str2 ]   
     then   
          echo "Les chaînes sont égales"   
     else   
         echo "Les chaînes ne sont pas égales"   
     fi   
 fi

Instruction conditionnelle basée sur une chaîne

Condition basée sur des arithmétiques

Le shell fournit plusieurs façons de déclarer une condition basée sur des arithmétiques. La première consiste à utiliser des mnémotechniques qui peuvent être utilisées avec la syntaxe à une seule parenthèse de style ancien et l’autre en utilisant des symboles mathématiques qui peuvent être utilisés avec la double parenthèse.

Voici la liste des mnémotechniques disponibles pour les instructions conditionnelles basées sur des arithmétiques dans le shell :

OpérateurUtilisation/Description
-eqÉgal
-geSupérieur ou Égal
-gtSupérieur
-leInférieur ou Égal
-ltInférieur
-nePas Égal

Créons un script qui accepte un entier de l’utilisateur et détermine si l’entier est un zéro, négatif, impair ou un nombre pair.

#!/bin/bash   
   
read -p "Entrez un entier : " int1   
 if [ $int1 -eq 0 ]   
 then   
     echo "Zéro"   
 elif [ $int1 -lt 0 ]   
 then   
     echo "Négatif"   
 else   
     if [ $((int1%2)) -eq 0 ]   
     then   
         echo "Pair"   
     else   
         echo "Impair"   
     fi   
 fi

Instruction conditionnelle basée sur des arithmétiques

Opérateur arithmétique pour la syntaxe à double parenthèse :

OpérateurUtilisation/Description
==Égal
>=Supérieur ou Égal
>Supérieur
<=Inférieur ou Égal
<Inférieur
!=Pas Égal

Maintenant, reconstruisons notre script précédent et utilisons la syntaxe à double parenthèse :

#!/bin/bash  
  
read -p "Entrez un entier : " int1   
 if (( $int1 == 0 ))   
 then   
     echo "Zéro"   
 elif (( $int1 < 0 ))   
 then   
     echo "Négatif"   
 else   
     if (( $((int1%2)) == 0 ))   
     then   
         echo "Pair"   
     else   
         echo "Impair"   
     fi   
 fi

Opérateur basé sur des arithmétiques

Instruction Switch

L’instruction switch est un autre type d’instruction conditionnelle dans le scripting shell. Elle permet à un programmeur de comparer plusieurs valeurs par rapport à une variable de manière plus simple par rapport à l’instruction conditionnelle if. La syntaxe pour l’instruction switch est :

 case  in  
 )  
     ##série de code pour pattern1  
     ;;  
 )  
     ##série de code pour pattern2  
     ;;  
 )  
     ##série de code pour patternN  
     ;;  
 *)   
     ##instructions par défaut  
 esac  
 

Le motif est la valeur possible de la variable. Chaque motif est séparé par un double point-virgule qui sert d’instruction de rupture du motif. L’instruction switch est fermée par une instruction esac.

#!/bin/bash   
 clear   
 read -p "Entier1 : " int1   
 read -p "Entier2 : " int2   
 echo "======================"   
 printf "Menu : \n[a] Addition\n[b]Soustraction\n[c]Multiplication\n[d]Division\n"   
 echo "======================"   
 read -p "Votre choix : " choice   
 res=0   
 case $choice in   
 a)   
     res=$((int1+int2))   
 ;;   
 b)   
     res=$((int1-int2))   
 ;;   
 c)   
     res=$((int1*int2))   
 ;;   
 d)   
     res=$((int1/int2))   
 ;;   
 *)   
     echo "Entrée invalide"   
 esac   
 echo "Le résultat est : " $res

Instruction Switch dans linux

Conclusion

Le shell bash fournit de nombreux outils utiles pour les programmeurs. Tout comme la plupart des langages de programmation aujourd’hui, il est également capable de prendre des décisions conditionnelles qui rendent les scripts shell plus interactifs et intelligents. Nous aborderons la structure de contrôle répétitive dans la prochaine série. À la prochaine fois.

Références

La prochaine leçon : Structures de Contrôle de Répétition

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.