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