Table des matières

Linux

Boucle sur condition - WHILE / UNTIL


Syntaxe

La boucle while do… done exécute une séquence de commandes tant que la dernière commande de la “liste de commandes” est “vrai” (statut égal à zéro).

while liste de commandes 
do 
    commande1 
    [ commande2 ?] 
done

La boucle until do… done exécute une séquence de commandes tant que la dernière commande de la “liste de commandes” est “faux” (statut différent de zéro).

until liste de commandes 
do 
    commande1 
    [ commande2 ?] 
done

Exemple : Lire un fichier ligne par ligne
while read ligne 
do 
    cat $ligne 
    [ commande2 ?] 
done < ~/fichier.txt

Exemple : Script qui affiche tous les fichiers du répertoire courant et qui, pour chaque fichier, indique si c'est un fichier de type « répertoire », de type « ordinaire » ou d'un autre type.
#!/bin/sh 
# Script d'affichage d'informations sur les fichiers du répertoire courant 
 
# La commande "read" lit l'entrée standard. Mais cette entrée peut être redirigée d'un pipe 
# De plus, "read" renvoie "vrai" quand elle a lu et "faux" quand il n'y a plus rien à lire 
# On peut donc programmer une boucle de lecture pour traiter un flot d'informations 
ls | while read fic # Tant que le "read" peut lire des infos provenant du "ls" 
do 
    # Évaluation du fichier traité 
    if test -d "$fic" 
    then 
        echo "$fic est un répertoire" 
    elif test -f "$fic" 
    then 
        echo "$fic est un fichier ordinaire" 
    else 
        echo "$fic est un fichier spécial ou lien symbolique ou pipe ou socket" 
    fi 
done