Salut à tous, c'est Florian du site IT-Connect. Bienvenue dans cette seconde vidéo au sujet du
scripting Bash sous Linux. Je vous remercie tout d'abord pour vos nombreux commentaires sur ma
première vidéo sur le sujet. Visiblement c'est un sujet qui vous intéresse donc je vais faire
plusieurs vidéos dessus pour qu'on puisse aborder différentes notions et vous puissiez monter en
compétence sur ce sujet. Aujourd'hui on va s'intéresser à quelque chose de très important
c'est les structures conditionnelles IF, ELSE et LEAF, que je n'avais pas du tout abordé dans
la première vidéo. Je vais vous expliquer totalement comment ça fonctionne au niveau
de la syntaxe et puis nous allons mettre ça en pratique au travers de différents exemples
Alors si le sujet vous plaît, n'hésitez pas à regarder la suite de la vidéo, mais avant cela pensez à vous abonner à la chaîne YouTube IT-Connect
Alors déjà tout d'abord c'est quoi une structure conditionnelle ? C'est une structure de code qui
va nous permettre d'agir en fonction d'une condition, c'est à dire si une condition est
vraie on va pouvoir faire une action, sinon on va pouvoir faire une autre action. Le fait de mêler
les conditions IF, ELSE et LEAF, on va voir que ça va nous permettre de gérer une multitude de
conditions différentes. On va tout d'abord commencer par simplement la syntaxe de base
avec uniquement le IF. Comment ça va s'écrire ? On va mettre le mot clé IF et entre crochets on
va venir mettre notre condition et ensuite on va mettre le ZEN et à l'intérieur on va mettre le
bloc de code que l'on veut exécuter et qui sera exécuté uniquement si la condition IF est vraie
Et à la fin on a le mot clé PHI qui sera toujours là dans une structure conditionnelle en scripting
bash de manière à clôturer la structure conditionnelle. Donc en fait le début c'est
IF et la fin c'est forcément le PHI et entre deux ça peut évoluer en fonction de ce que l'on va
vouloir faire. Voici un premier script très simple qui va nous permettre de mettre en pratique la
syntaxe que je viens de vous présenter. On va affecter à la variable nombre la valeur 20 et
on va tout simplement chercher à savoir si ce nombre est supérieur à 10 et s'il est supérieur
à 10 et uniquement dans ce cas là on va exécuter une action. L'action en l'occurrence ici c'est
simplement un message le nombre est supérieur à 10. Alors comment ça va se passer ? On retrouve
bien le mot clé IF et entre crochets la condition. Là je vais évaluer la valeur de ma
variable nombre et je vais utiliser un opérateur de comparaison. Il y a différents opérateurs de
comparaison en bash. Celui là permet de dire c'est plus grand que si on veut plus petit que
on mettrait tirer LT. Il y en a une multitude donc là c'est vraiment strictement supérieur à 10
Dans ce cas là on va afficher le message et sinon on ne fait rien et on continue l'exécution du
script. Du coup ce script là après lui avoir ajouté les bons droits on va pouvoir l'exécuter
Il me dit bien que le nombre est supérieur à 10. Si je mets la valeur 5 pour le coup je vais
l'exécuter. Ça ne me retourne rien donc j'ai bien le résultat attendu. Si on veut aussi exécuter une
action lorsque ce fameux nombre est inférieur ou égal à 10, il va falloir ajouter le else dans
cette fameuse structure. Là on va venir rajouter à la suite du zène le else. Là ça va donner
si on lit un petit peu littéralement, si la condition est vraie alors on exécute ce bloc
de code. Sinon c'est à dire que lorsque la condition est fausse on exécute le bloc de
code qui est ici et on a bien le phi qui clôture le tout à la fin. Du coup si je retourne sur mon
script ça me donne l'ajout d'un mot clé else et du code à exécuter dans le cas présent. J'ai
bien toujours la même condition, simplement que je rajoute le else et donc cette fois ci le nombre
du coup c'est égal à 5. Si j'exécute ce fameux script ça me dit bien le nombre est inférieur ou
égal à 10 et si je remets la valeur 15 par exemple, cette fois ci ça me dit bien que le
nombre est supérieur à 10. Là on a créé un script qui permet en fonction d'une valeur que
l'on va évaluer dans la condition, d'exécuter un code ou un autre code. Ça commence à être vraiment
très intéressant et nous pourrions nous intéresser à un autre exemple qui est celui-ci et qui va nous
permettre de tester si un fichier existe sur la machine. On va définir dans la variable le
chemin complet vers le fichier, en l'occurrence ici un simple fichier .txt et on va essayer de
chercher si ce fichier existe ou non. C'est vraiment le type de bootcode que l'on va avoir
à utiliser dans des script batch quand on va vouloir manipuler des données. Si on veut peut-être copier
un fichier ou le déplacer, il y a plein de cas d'usage différents possibles, ça peut être
intéressant avant de voir est-ce qu'il existe ou pas. Comment on va faire ce fameux test
On va utiliser l'opérateur "-e", que l'on va venir mettre devant le nom du fichier. Le
batch va vérifier si le fichier existe. Si le fichier existe, c'est ce bout de code qui sera
exécuté, sinon c'est le bout de code qui est ici. Je me souviens plus du fait si le fichier existe ou
pas, mais on va très vite le savoir en exécutant ce script. Le fichier existe sur la
machine, on pourrait même essayer de l'afficher pour le vérifier. Il est vide, mais on va aller
lister le contenu du dossier home flow. Le fichier est présent ici. Maintenant, si je mets un autre
nom de fichier ici, je rajoute simplement un T, en principe ce fichier-là je suis sûr qu'il n'existe
pas. On me dit que le fichier, et j'ai rappelé le nom du fichier grâce à ma variable, n'existe pas
sur cette machine. Pour aller encore plus loin avec les structures conditionnelles, on va venir
rajouter le ELIF. Le ELIF c'est un nom court du ELSEIF, qui signifie « sinon si ». Ce qui veut dire
qu'on va pouvoir avoir plusieurs conditions à évaluer de manière indépendante dans une même
structure conditionnelle. Ça nous donne ceci, si la condition 1 est vraie, alors on exécute le code
uniquement si la condition 1 est vraie. Et si celle-ci est fausse, on va aller évaluer la
condition numéro 2, qui est dans le ELIF. Le ELIF vient se positionner ici avec sa propre
condition, et on va l'évaluer. Si elle est vraie, on rajoute aussi le mot-clé ZEN, comme avec le IF
on va exécuter le bloc de code qui est présent ici. Sinon, à la fin, si la condition 1 et la
condition 2 sont fausses, on va exécuter ce qui est présent entre le ELSE et le FI. J'ai
simplement mis un seul ELIF, mais on peut en avoir plusieurs en fonction des besoins. Un
exemple s'impose pour vous montrer ce que ça peut donner en pratique. Ici, je définis simplement
l'heure. J'ai mis une heure statique, par exemple 16 heures. Je stocke cette information dans une
variable, et on va retourner un message en fonction de l'heure. On va regarder si l'heure est plus
petite que 13. Dans ce cas-là, si c'est le cas, on considère qu'on est encore en début de journée
donc on va dire bonjour. Par contre, si l'heure est plus petite que 17, c'est-à-dire qu'elle sera
comprise entre 13 et 17, on va dire bon après-midi. Sinon, on est plutôt en fin de journée, donc on
va dire bonsoir. On voit ici qu'on va adapter le comportement du script en fonction d'une valeur de
départ. C'est un exemple plutôt bateau, mais qui montre bien le fonctionnement. L'heure
admettons si c'est 16 heures, si j'exécute ce bout de code, il me dit bon après-midi
parce qu'effectivement, je suis bien dans une heure. C'est bien cette condition-là qui est
vraie. Celle-ci étant fausse. Si je modifie, je mets par exemple 10 heures, je devrais avoir le
message bonjour, c'est bien le cas. Enfin, si je mets par exemple 20 pour 20 heures, je devrais
avoir le message bonsoir. On voit bien que la mécanique fonctionne parfaitement, et on a bien
ici notre condition qui a été évaluée à chaque fois. Nous n'avons pas utilisé l'opérateur
gt, mais lt, qui est plus petit que comme je l'évoquais précédemment. Il faut savoir qu'on
peut aussi intégrer plusieurs tests dans une même condition globale. Ici, j'ai fait un script qui me
permet de vérifier l'état de service. L'objectif, c'est de vérifier que le service SSH et le service
APAGE2, pour le service web, sont bien actifs sur la machine. Du coup, je vais avoir deux conditions
à tester dans une même condition if globale. Je vais avoir ici ma première condition entre
crochets. Je vais avoir ensuite l'opérateur, c'est à dire que je veux que mes deux conditions soient
vraies. Ça veut dire et, si je mets à la place deux barres verticales, ça veut dire ou. C'est
l'opérateur ou, donc là il faudrait que l'une ou l'autre des conditions soient vraies pour exécuter
le code ici. Alors que là, je veux que mes deux conditions soient vraies pour exécuter le code
qui est ici. C'est à dire que là, je vérifie que mes deux services sont actifs. Si j'ai un service
actif et l'autre inactif, c'est le code qui est dans le else qui sera exécuté. Si les deux sont
actifs, c'est bien le code qui est ici. Donc, simplement un message de confirmation. Comment
on va récupérer cette information ? On va s'appuyer sur System Control, il y a un argument qui est
isActive et derrière on met le nom du service. Ça permet de retourner l'information. Du coup
ça va retourner Active si le service est effectivement actif. Dans ce cas là, on regarde
que la valeur qui est dans la variable est bien égale au mot clé Active. On fait ça pour les
deux services et ça va nous renvoyer tout simplement le résultat dans la console. On
va exécuter ce fameux script CheckService. Là visiblement, le SSH est inactif mais à page 2
est actif. Je pourrais d'ailleurs faire un systèmectl status SSH pour le vérifier. Là
il me dit bien qu'il est inactif. Je vais pouvoir le démarrer. Je vais rajouter sudo pour ne pas
avoir un problème de droit. Je vais démarrer le service sur la machine. Désormais, il est bien
actif et je vais réexécuter mon script. Cette fois-ci, il me dit bien que les deux services
sont en cours d'exécution. Mon test fonctionne très bien et on a bien vu l'intérêt d'avoir
cette double condition avec l'opérateur et entre les deux pour joindre les deux conditions ensemble
Voilà cette vidéo de présentation sur les structures conditionnelles IF, ELSE, ELIF en Bash est terminée. J'espère que ça vous a plu, que les explications étaient claires. Vous
avez aussi eu l'occasion de découvrir différents exemples qui vont peut-être vous donner des idées
pour créer vos premiers scripts Bash qui vont intégrer les structures conditionnelles. Il y a
d'autres manières de faire des tests comme ça en Bash, on pourra voir ça par la suite. Mais
certainement dans le prochain épisode, on va s'intéresser à l'étude des boucles. En attendant
n'hésitez pas à liker, à commenter cette vidéo et je vous dis à très vite ! Ciao