Les commandes de boucle "while" et "until"

 La structure conditionnelle UNTIL est une variante de la structure WHILE.

Alors que la structure while se répète tant que la condition retourne une valeur vraie, la structure until se répète tant que la condition retourne une valeur fausse. Format : 

while condition                                    
do
           instructions                     
done     
while [ condition ]        
do
               instructions                          
done                                        

  "while" signifie TANT QUE la condition est vraie."until" signifie JUSQU'A CE QUE la condition soit vraie.  

Exemple : 

 $until test -r stopfile    = jusqu'à ce que l'accès en lecture                  
>do                           = du fichier "stopfile' soit possible                  
>sleep 2                  
 >echo bonjour                  
>done &                  
$ 
 Le caractère & indique à la commande until de s'exécuter en tâche de fond. Toutes les deux secondes, le message "bonjour" s'affiche. Pour stopper cette boucle, il suffit de créer le fichier stopfile avec autorisation de lecture. 
 Exemple : 
$cat >prog                  
while test -f fictest     = tant que "fictest" est un fichier                  
do
               sleep 5                  
done                                     
$ 

 Cette boucle teste si fictest  est un fichier;  si c'est le cas, la commande sleep suspend l'exécution pendant 5 secondes.  

Exemple : 

                    $while test ! -r fictest     = tant que "fictest" n'est pas lisible
                   >do
                   >sleep 1
                   >done
                   $

 L'argument point d'exclamation (!)prend la négation du test de lecture ainsi "test" retourne une valeur vraie si le fichier ne peut être lu.Une autre méthode consiste à utiliser la structure "until" : 

Exemple : 

                    $until test -r fictest     = jusqu’à ce que "fictest" soit lisible
                   >do
                   >sleep 1
                   >done
                   $


 Remarque : Ces structures peuvent être imbriquées entre elles autant de fois que l'on veut :                    while condition-WHILE                  

do                                 

if condition-IF                                 

then                                          

for var in liste-mots                                          

do                                                   

case $var in                                                    

 val1) bloc-commandes-1

; ;                                                    ...                                                   

 *)             bloc-commandes-n

; ; 
                                                   

esac                                                    ...                                                   

 suite-instructions-FOR                                                    ...                                           done          

                                 ...                                           suite-instructions-IF                                           ...                                           fi                                           ...                                  suite-instructions-WHILE                                  ...                   done

icon phone
Téléphone/Whatsapp : +33 (0)6 83 84 85 74
icon phone