Bash Scripting : instruction if imbriquée
Une instruction if dans un script Bash est la façon la plus simple d’utiliser une instruction conditionnelle.
En termes simples, ces instructions conditionnelles définissent « si une condition est vraie, alors faites cela, sinon faites ceci à la place. » Les instructions if deviennent plus complexes lorsque vous les imbriquez ensemble, ou en d’autres termes, placez une instruction if dans une autre if déclaration. Vous pouvez rendre le nid aussi profond que vous le souhaitez, bien qu’il continue à devenir plus complexe.
Dans ce tutoriel, vous allez apprendre à utiliser des instructions if imbriquées dans un script Bash sur un système Linux. Consultez certains des exemples ci-dessous pour voir comment fonctionnent les instructions if imbriquées.
Dans ce tutoriel, vous allez apprendre :
- Comment structurer une instruction if imbriquée dans un script Bash
- Exemple réel d’instructions if imbriquées à essayer sur votre propre système
Structure d’une instruction if imbriquée
Tout d’abord, voyons comment une instruction if imbriquée est structurée dans un script Bash. Cela vous familiarisera avec la syntaxe afin que vous puissiez facilement interpréter les exemples à venir, et éventuellement écrire les vôtres à partir de zéro.
#!/bin/bash
if EXPRESSION1; then
STATEMENT1
if EXPRESSION2; then
STATEMENT2
fi
fiIl s’agit de la forme la plus élémentaire d’une instruction if imbriquée. Passons en revue ce qui se passe ici :
- La première instruction
ifvérifie si une expression est vraie. Si c’est le cas, il procède à la première énoncé. - Après la première instruction, le script vérifie si une autre expression est vraie. Si c’est le cas, il passe à la deuxième affirmation.
- Mais si la condition n’est pas mise en correspondance pour la deuxième instruction
if, seule la première instruction est exécutée, puis le script s’échappe de l’intégralité del’ifimbriqué. - Si la première expression ne correspond pas, il n’y a aucune chance d’entrer dans l’instruction
ifimbriquée pour vérifier la deuxième condition ou toute autre condition ultérieure. - N’oubliez pas que la deuxième instruction
ifdoit être terminée avant la première, car elle est imbriquée
Si tout cela n’a pas de sens au début, ne vous inquiétez pas. L’exemple ci-dessous vous aidera à mieux visualiser le processus.
Bash Scripting : exemple d’instruction if imbriquée
Consultez l’exemple ci-dessous pour voir comment utiliser des instructions if imbriquées dans un script Bash.
Il est normalement avantageux d’utiliser une instruction case plutôt qu’un tas d’instructions
if imbriquées.Le script ci-dessous vérifiera d’abord s’il s’agit d’un jour de semaine (du lundi au vendredi). Si c’est le cas, il vérifiera alors si c’est le matin ou le soir (matin ou après-midi). Mais, si la première instruction if n’est pas respectée parce que c’est le week-end (samedi ou dimanche), alors la deuxième instruction if ne sera pas exécutée du tout.
#!/bin/bash
Determine the day of week and store it inside the $day variable
day=$(date +"%u")
Determine if it is morning or night and store it in the $time variable
time=$(date +"%p")
Check if the day of the week is between 1-5 (Mon-Fri)
if [ $day -le 5 ]; then
# if it is a weekday, echo the text below
echo "today is a weekday"
# now determine if it is morning or night time
if [ $time == "AM" ]; then
echo "it is morning"
else
echo "it is night"
fi
else
# if the first condition was not met, execute the following command
echo "today is the weekend!"
fiVoici le résultat lorsque nous exécutons le script :
date
Fri 25 Feb 2022 09:55:14 PM EST
./test.sh
today is a weekday
it is night
L’intérêt d’un if imbriqué est que la deuxième instruction if n’est utilisée que si la première instruction if est vraie. Dans ce cas, notre script ne vérifie l’heure de la journée que s’il a d’abord déterminé que le jour de la semaine est du lundi au vendredi. Nous avons laissé des commentaires dans le script pour faciliter la digestion.
Réflexions finales
Dans ce tutoriel, vous avez appris à utiliser une instruction if imbriquée dans les scripts Bash sur un système Linux. Ce type d’instruction conditionnelle a une utilisation de niche, car il est généralement préférable d’utiliser des instructions case. Si votre imbrication n’est que de deux instructions if, il est généralement facile de la maintenir et de comprendre ce qui se passe, comme nous l’avons montré dans l’exemple ici.
