====== 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