next up previous contents Next: Boucles: l'instruction for. Up: Les scripts du shell. Previous: Introduction.   Table des matières  

8.2 Boucles: instructions while et until.

Le shell lit chaque ligne séquentiellement de haut en bas: c'est le flux de programmation. Si, maintenant, vous désirez qu'une commande soit exécutée plus d'une fois, il faut altérer le flux de programmation. La commande while exécute une séquence contrôlée de commandes de manière répétée. En voici un exemple (-le veut dire less than or equal: plus petit ou égal):

N=1

while test "$N" -le "10"

do

     echo "Number $N"

     N=$[N+1]

done 




L'initialisation N=1 crée une variable N et lui attribue une valeur 1. La commande while exécute toutes les commandes entre do et done, répétitivement juqu'à ce que la condition de test ne soit plus vérifiée (en l'occurrence, jusqu'à ce que N ne soit plus inférieur ou égal à 10). L'expression -le signifie less than or equal to. Voir test (1) (c'est-à-dire man (1) test) pour rencontrer d'autres types de test que vous pouvez appliquer à des variables. Observez aussi la manière dont N est substitué avec la nouvelle valeur qui augmente d'une unité à chaque répétition de la boucle while.

Vous devriez constater que chaque ligne est une commande; les commandes sont séparées par un passage à la ligne. Vous pouvez aussi avoir plus d'une commande par ligne pour autant qu'elles soient séparées par un point-virgule comme dans l'exemple suivant:

N=1; while test "$N" -le "10"; do echo "Number $N"; N=$[N+1]; done 


(Essayez de décompter à partir de 10 avec (greater than or equal to)). Il est aisé de constater que les scripts de shell sont puissants parce que tout type de commande peut être exécuté avec des conditions et des boucles.

La déclaration until est identique à while sauf que sa logique est inverse. La même fonctionnalité est rencontrée avec -gt (greater than):

N=1; until test "$N" -gt "10"; do echo "Number $N"; N=$[N+1]; done 


next up previous contents Next: Boucles: l'instruction for. Up: Les scripts du shell. Previous: Introduction.   Table des matières  
1-01-2006