Maîtriser les Boucles et la Sortie Formattée en Bash

La commande echo et les séquences d'échappement

La commande echo est fondamentale pour afficher du texte dans un terminal. Par défaut, elle ajoute un saut de ligne à la fin de la sortie.

  • Utiliser l'option -n pour supprimer le saut de ligne final.
  • Utiliser l'option -e pour activer l'interprétation des caractères d'échappement.

Caractères d'échappement courants :

  • \n : Insère un saut de ligne.
  • \t : Insère une tabulation horizontale.
  • \r : Retour chariot (déplace le curseur au début de la ligne sans saut de ligne).
  • \b : Efface le caractère précédent (backspace).
  • \c : Supprime tout saut de ligne final et arrête l'affichage du reste de la chaîne.
  • \\ : Affiche un anitslash littéral.

La boucle for

La boucle for permet d'itérer sur une liste de valeurs ou une plage définie.

Syntaxe de base :

for item in liste_valeurs; do
    # commandes
done

Exemples de génération de listes :

for nombre in {1..5}; do echo $nombre; done
for lettre in a b c d; do echo $lettre; done

Exemple pratique : Vérifier la disponibilité de plusieurs serveurs web via HTTP.

#!/bin/bash
# Vérification de l'état de serveurs via HTTP

serveurs=("google.com" "github.com" "invalid-url-test.com")

for hote in "${serveurs[@]}"; do
    if curl -s --head --request GET "http://$hote" | grep "200 OK" > /dev/null; then
        echo "Le serveur $hote est accessible."
    else
        echo "Le serveur $hote est inaccessible."
    fi
done

La boucle while

La boucle while exécute un bloc de code tant qu'une condition spécifique est évaluée comme vraie.

Syntaxe :

while [ condition ]; do
    # commandes
done

Exemple pratique : Jeu de devinette (trouver un nombre entre 1 et 100).

#!/bin/bash
cible=$((RANDOM % 100 + 1))
tentatives=0
trouve=false

echo "Devinez le nombre entre 1 et 100."

while [ "$trouve" = false ]; do
    read -p "Votre proposition : " proposition
    tentatives=$((tentatives + 1))
    
    if [ "$proposition" -eq "$cible" ]; then
        echo "Bravo ! Vous avez trouvé en $tentatives essais."
        trouve=true
    elif [ "$proposition" -lt "$cible" ]; then
        echo "C'est plus grand."
    else
        echo "C'est plus petit."
    fi
done

La boucle until

Contrairement à while, la boucle until continue d'exécuter le bloc de code tant que la condition est fausse. Elle s'arrête dès que la condition devient vraie.

Syntaxe :

until [ condition ]; do
    # commandes
done

Exemple pratique : Calcluer la somme des entiers jusqu'à ce que le total dépasse 200.

#!/bin/bash
compteur=1
somme=0

until [ "$somme" -gt 200 ]; do
    somme=$((somme + compteur))
    compteur=$((compteur + 1))
done

echo "La somme a dépassé 200. Valeur finale : $somme (atteinte après $((compteur - 1)) itérations)."

Étiquettes: bash shell-scripting Linux-Commands control-flow scripting

Publié le 5 juillet à 04h03