CodeGym /Cours /Docker SELF /Conditions (`if`, `else`) et boucles (`for`, `while`) en ...

Conditions (`if`, `else`) et boucles (`for`, `while`) en bash

Docker SELF
Niveau 3 , Leçon 4
Disponible

Conditions if, else et boucles for, while en bash

1. Conditions en bash : if, else, et un peu de magie

À quoi servent les conditions ?

Les conditions permettent à ton script de prendre des décisions basées sur des données entrantes, des variables ou même des résultats d’exécution de commandes. Par exemple, tu veux vérifier si un fichier existe ou t’assurer qu’un serveur est accessible avant de passer à l’action suivante. C’est là que la structure if entre en jeu.

Syntaxe de base

Voici à quoi ressemble une condition classique if en bash :

if [ condition ]; then
    # Ici, le code s'exécute si la condition est vraie
    echo "La condition est remplie !"
else
    # Ici, le code s'exécute si la condition est fausse
    echo "La condition n'est pas remplie !"
fi

Mots-clés :

  • if, then, else, et fi (le bloc de fermeture if) — ce sont des mots magiques. Sans eux, le script ne fonctionnera pas.
  • Les crochets [ ... ] sont utilisés pour vérifier les conditions.

Exemple 1 : Vérification de l'existence d'un fichier

#!/bin/bash

FILE="/etc/passwd"

if [ -f $FILE ]; then
    echo "Le fichier $FILE existe."
else
    echo "Le fichier $FILE est introuvable."
fi

Explication :

  • -f vérifie si le fichier existe.
  • Si le fichier existe, la commande echo affiche un message à ce sujet. Sinon, c’est le bloc else qui est exécuté.

Conditions avec des commandes

Tu peux utiliser le résultat d’exécution d’une commande comme condition, parce que dans Linux, tout est commande.

Exemple 2 : Vérification de la disponibilité d’un site web

#!/bin/bash

if ping -c 1 example.com &> /dev/null; then
    echo "Le site est accessible."
else
    echo "Le site est inaccessible."
fi

Explication :

  • ping -c 1 envoie une seule requête au serveur. Si le serveur répond, la condition devient vraie.
  • &> /dev/null cache la sortie de la commande pour ne pas encombrer le terminal.

Utilisation de l’opérateur elif

Parfois, if et else ne suffisent pas. Tu dois prendre en compte plusieurs conditions. C’est là que elif est utile.

Exemple 3 : Détermination du moment de la journée

#!/bin/bash

HOUR=$(date +%H)

if [ $HOUR -lt 12 ]; then
    echo "Bonjour !"
elif [ $HOUR -lt 18 ]; then
    echo "Bon après-midi !"
else
    echo "Bonsoir !"
fi

Explication :

  • date +%H retourne l’heure actuelle au format 24h.
  • On compare l’heure actuelle avec des valeurs fixes : si c’est moins de 12 — matin, moins de 18 — après-midi, sinon — soir.

2. Boucles dans bash : la répétition est la mère de l'apprentissage

Les boucles permettent à ton script de répéter des actions tant qu'une certaine condition est remplie. C'est super utile si tu dois traiter plusieurs fichiers, répéter une tâche plusieurs fois ou attendre un événement spécifique.

Boucle for

for parcourt une liste de valeurs (par exemple, des fichiers ou des nombres) et exécute une action pour chacun d'eux.

Exemple 4 : Simple boucle for

#!/bin/bash

for i in {1..5}; do
    echo "C'est l'itération numéro $i"
done

Explication :

  • {1..5} — liste de nombres de 1 à 5.
  • À chaque itération, la variable i prend une valeur de la liste.

Exemple 5 : Boucle sur les fichiers dans un répertoire

#!/bin/bash

for FILE in /etc/*; do
    echo "Traitement du fichier : $FILE"
done

Explication :

  • /etc/* — c'est la liste de tous les fichiers dans le dossier /etc.
  • À chaque itération, la variable FILE contient le nom d'un fichier.

Boucle while

while exécute des actions tant qu'une condition est remplie.

Exemple 6 : Devine le nombre

#!/bin/bash

SECRET=5
GUESS=0

while [ $GUESS -ne $SECRET ]; do
    echo "Saisis ton estimation (nombre de 1 à 10) :"
    read GUESS
done

echo "Tu as deviné !"

Explication :

  • [ $GUESS -ne $SECRET ] — la condition continue tant que le nombre saisi GUESS n'est pas égal au nombre secret SECRET.

Combiner les boucles et les conditions

Parfois, les conditions et les boucles travaillent ensemble.

Exemple 7 : Vérification de plusieurs sites web

#!/bin/bash

SITES=("example.com" "google.com" "nonexistent.website")

for SITE in ${SITES[@]}; do
    if ping -c 1 $SITE &> /dev/null; then
        echo "$SITE est accessible."
    else
        echo "$SITE est inaccessible."
    fi
done

Explication :

  • Le tableau SITES contient une liste de sites web.
  • for parcourt chaque site du tableau.
  • if vérifie l'accessibilité du site avec ping.

3. Exercices pratiques

Vérification de domaine

Écris un script qui prend un nom de domaine comme argument et vérifie sa disponibilité.

Astuce :

if ping -c 1 $1 &> /dev/null; then
    echo "Domaine disponible."
else
    echo "Domaine indisponible."
fi

Travail avec des fichiers

Écris un script qui vérifie l'existence de plusieurs fichiers et affiche le résultat pour chacun d'eux.

Astuce :

FILES=("file1.txt" "file2.txt" "/etc/passwd")
for FILE in ${FILES[@]}; do
    if [ -f $FILE ]; then
        echo "$FILE existe."
    else
        echo "$FILE pas trouvé."
    fi
done

Table de multiplication

Écris un script avec des boucles imbriquées qui affiche une table de multiplication pour les nombres de 1 à 10.

Astuce :

for i in {1..10}; do
    for j in {1..10}; do
        echo -n "$((i * j)) "
    done
    echo ""
done

Maintenant, tu peux ajouter de l'intelligence et de la logique à tes scripts bash. Les conditions te permettront de vérifier des états et de prendre des décisions, tandis que les boucles t'aideront à automatiser des tâches répétitives. Encore plus de possibilités d'automatisation t'attendent !

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION