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
fiSyntaxe à double parenthèse
if ((condition))
then
### série de code ici
fiLa 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érateur | Description |
| -a fichier | Retourne vrai si le fichier existe |
| -b fichier | Retourne vrai si le fichier existe et est un fichier spécial de bloc |
| -c fichier | Retourne vrai si le fichier existe et est un fichier spécial de caractère |
| -d fichier | Retourne vrai si le fichier existe et est un répertoire |
| -e fichier | Retourne vrai si le fichier existe |
| -r fichier | Retourne vrai si le fichier existe et est lisible |
| -s fichier | Retourne vrai si le fichier existe et a une taille supérieure à zéro |
| -w fichier | Retourne vrai si le fichier existe et est modifiable |
| -x fichier | Retourne vrai si le fichier existe et est exécutable |
| -N fichier | Retourne 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
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
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érateur | Description |
| == | Retourne vrai si les chaînes sont égales |
| != | Retourne vrai si les chaînes ne sont pas égales |
| -n | Retourne vrai si la chaîne à tester n’est pas nulle |
| -z | Retourne 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
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érateur | Utilisation/Description |
| -eq | Égal |
| -ge | Supérieur ou Égal |
| -gt | Supérieur |
| -le | Inférieur ou Égal |
| -lt | Inférieur |
| -ne | Pas É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
Opérateur arithmétique pour la syntaxe à double parenthèse :
| Opérateur | Utilisation/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
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
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
- http://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html
- https://linuxacademy.com/blog/linux/conditions-in-bash-scripting-if-statements/
La prochaine leçon : Structures de Contrôle de Répétition
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.