Unix / Linux -prise de décision dans le script Shell
Bonjour, futurs programmeurs ! Aujourd'hui, nous allons plonger dans le monde passionnant de la prise de décision dans les scripts Shell Unix et Linux. En tant que votre enseignant de informatique bienveillant du quartier, je suis là pour vous guider dans ce voyage, étape par étape. Alors, prenez votre boisson favorite, installez-vous confortablement, et partons ensemble dans cette aventure !
Les instructions if...else
Imaginez que vous êtes à un carrefour dans votre code et que vous devez prendre une décision en fonction de certaines conditions. C'est là que les instructions if...else
deviennent utiles. Elles sont comme les feux de circulation de la programmation, guidant votre code vers différents chemins en fonction de la vérité ou de la fausseté des conditions.
Instruction if de base
Commençons par la forme la plus simple de l'instruction if
:
if [ condition ]
then
command1
command2
...
commandN
fi
Voici un exemple du monde réel :
#!/bin/bash
age=18
if [ $age -ge 18 ]
then
echo "You are old enough to vote!"
fi
Dans cet exemple, nous vérifions si la variable age
est supérieure ou égale à 18. Si c'est le cas, le message "You are old enough to vote!" sera affiché.
Instruction if...else
Maintenant, que faire si nous voulons faire quelque chose lorsque la condition est fausse ? C'est là que la clause else
entre en jeu :
if [ condition ]
then
command1
command2
...
commandN
else
alternative_command1
alternative_command2
...
alternative_commandN
fi
Modifions notre exemple de vote :
#!/bin/bash
age=16
if [ $age -ge 18 ]
then
echo "You are old enough to vote!"
else
echo "Sorry, you're too young to vote."
fi
Maintenant, si l'âge est inférieur à 18, il affichera le message "Sorry, you're too young to vote."
Instruction if...elif...else
Parfois, la vie (et le code) ne se résume pas à des situations binaires. Nous avons souvent besoin de vérifier plusieurs conditions. C'est là que la clause elif
(else if) entre en jeu :
if [ condition1 ]
then
command1
elif [ condition2 ]
then
command2
else
alternative_command
fi
Créons un exemple plus complexe :
#!/bin/bash
grade=75
if [ $grade -ge 90 ]
then
echo "A - Excellent!"
elif [ $grade -ge 80 ]
then
echo "B - Good job!"
elif [ $grade -ge 70 ]
then
echo "C - You passed."
else
echo "F - You need to study more."
fi
Ce script évalue la note d'un étudiant et fournit des retours appropriés en fonction de différentes plages de notes.
L'instruction case...esac
Maintenant, imaginez que vous êtes à un buffet avec plusieurs options alimentaires. C'est ce que l'instruction case...esac
est dans la programmation. Elle vous permet de matcher une valeur contre une liste de motifs et d'exécuter des commandes en fonction de la correspondance.
La syntaxe de base est la suivante :
case expression in
pattern1)
command1
command2
...
commandN
;;
pattern2)
command1
command2
...
commandN
;;
*)
default_command
;;
esac
Voici un exemple pratique :
#!/bin/bash
fruit="apple"
case $fruit in
"apple")
echo "It's a delicious red fruit!"
;;
"banana")
echo "It's a yellow curved fruit!"
;;
"orange")
echo "It's a juicy citrus fruit!"
;;
*)
echo "I don't know that fruit."
;;
esac
Dans cet exemple, nous matchons la valeur de fruit
contre différents motifs. Si elle correspond à "apple", elle affichera le message correspondant. Si elle ne correspond à aucun des motifs spécifiés, elle exécutera la commande par défaut (*
).
Motifs multiples
Vous pouvez également matcher plusieurs motifs pour le même ensemble de commandes :
#!/bin/bash
day=$(date +%A)
case $day in
Monday|Tuesday|Wednesday|Thursday|Friday)
echo "It's a weekday. Time to work!"
;;
Saturday|Sunday)
echo "It's the weekend. Time to relax!"
;;
*)
echo "What planet are you on?"
;;
esac
Ce script vérifie le jour de la semaine actuel et indique s'il s'agit d'un jour de travail ou de week-end.
Comparaison des instructions if...else et case...esac
Maintenant, comparons ces deux structures de prise de décision :
Fonctionnalité | if...else | case...esac |
---|---|---|
Complexité | Peut gérer des conditions complexes | Meilleur pour des correspondances de valeurs simples |
Lisibilité | Peut devenir difficile à lire avec de nombreuses conditions | Plus lisible avec de nombreuses conditions |
Performance | Légèrement plus lent pour de nombreuses conditions | Plus rapide pour de nombreuses conditions |
Flexibilité | Peut utiliser n'importe quel type de condition | Limité à la correspondance de motifs |
Au fil des ans, j'ai constaté que les étudiants peinent souvent à choisir entre if...else
et case...esac
. Voici un simple principe de base : si vous vérifiez une seule variable contre plusieurs valeurs possibles, case...esac
est votre ami. Pour tout le reste, tenez-vous en à if...else
.
souvenez-vous, la programmation est comme la cuisine. Ces structures de prise de décision sont vos ingrédients, et avec de la pratique, vous apprendrez quand utiliser chacun pour créer le script parfait !
En conclusion, la prise de décision est un aspect crucial de la scripting Shell. Elle permet à vos scripts de s'adapter et de répondre à différentes situations, les rendant plus puissants et flexibles. Que vous utilisiez if...else
ou case...esac
, vous êtes maintenant équipé des outils pour rendre vos scripts plus intelligents. Continuez à pratiquer, et bientôt vous écrirez des scripts qui peuvent prendre des décisions plus rapidement que vous ne pouvez dire "sudo" !
Credits: Image by storyset