EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire


Conforme à XHTML 1.0 Strict Conforme à CSS!

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

Bash et les boucles

Historique

22 mai 2014 : Création de cette page.

Difficulté

Pour : un esprit logique et curieux.

 Introduction

Nousallons découvrir dans ce chapitre un autre élément de base de tous les langages : les boucles.
Ces structures permettent de répéter autant de fois que nécessaire une partie du code. En bash, on également les faire

Haut

 Boucle for

La boucle for permet de parcourir une liste de valeurs et de boucler autant de fois qu'il y a de valeurs.

 for variable in liste

La boucle for permet de parcourir une liste de valeurs, elle exécute ainsi un certain nombre de fois une liste d'instructions, mais avec une ou plusieurs variables différentes. Syntaxe :
for variable in liste; do
  instruction1
  instruction2
  ...
done

ou, en plus court :
for variable in liste; do instruction1; instruction2; ...; done

Voici quelques exemples de listes, donnant le même résultat, afficher de 1 à 4 :

 for ((instructions))

Ce sont les instructions qui définissent la fin de la boucle. Un exemple est plus explicite (ici, en écriture courte):
for ((var=1;var<5;var++)); do echo $var; done
Cette boucle va également afficher les chiffres de 1 à 4.

Les instructions définissent ici :

  1. la valeur initiale de $var : var=1;
  2. la condition : var<5;
  3. l'incrémentation (décrémentation) : var++
Haut

 Boucle while

La boucle while exécute une liste d'instructions aussi longtemps qu'une certaine condition est remplie. Elle s'arrête lorsque la condition ne l'est plus.
var=0
limite=4
while [ $var -le $limite ]; dotant que $var plus petit ou égal à $limite
  echo $var
  ((var++))
done

Vous pouvez également utiliser la boucle while pour traiter un fichier, ligne par ligne.
while read Ligne; do
  traitement de la ligne
done < fichier

La boucle until est presque pareille, mais elle exécute la liste d'instructions aussi longtemps qu'une certaine condition n'est pas remplie.
La première ligne de la boucle s'écrirait alors :
var=0
limite=4
until [ $var -gt $limite ]; dojusqu'à ce que $var plus grand que $limite
  echo $var
  ((var++))
done

Haut

 Boucle select

select permet de générer un menu à partir d'une liste et de choisir un élément de ce menu. La syntaxe est :
select name in liste
   instructions pouvant utiliser la variable $name
   break pour sortir de la la boucle
done

Une ligne PS3="Votre texte" précèdera la boucle, pour introduire le menu.

Et voici ce fait select :
- Il génère un menu comprenant chacun des éléments de la liste précédé d'un numéro,
- il enregistre votre choix dans la variable, ici $name,
- il enregistre le numéro du choix dans une variable $REPLY,
- il exécute les instructions comprise entre les lignes select et done
- il répète le processus, sauf si vous avez prévu une instruction break

Haut