LES BOUCLES
Les boucles sont utilisées pour exécuter x fois une opération. Il existe quelques méthodes pour itérer des commandes.Boucle for
On affiche tous les jours de la semaine. Ces derniers font partie de la liste.for jours in Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche do echo $jours done
Au lieu d'inclure une liste (Lundi, Mardi...), il est possible de passer un paramètre. Par exemple, on pourrait afficher tous les fichiers qui commenceraient par b.
for fichier in b* do echo $fichier doneNotez qu'on aurait obtenu le même résultat en tapant ls b*
Il est possible de mettre la liste des valeurs dans une variable et ensuite de ce servir de cette dernière.
JOURS=" Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche" for jours in `echo $JOURS` do echo $jours done
Jusqu'à maintenant, la boucle for qu'on n'a vue n'avait rien à voir avec celle que plusieurs sont habitués d'utiliser en C. Il est bien sûr possible d'avoir une syntaxe similaire. Dans cet exemple, on affiche les chiffres de 1 à 10 et de 10 à 1.
MAX=10 MIN=0 for(( a=1, b=10; a < MAX, b > MIN; a++,b--)) do echo $a $b doneNotez qu'il est obligatoire de mettre une double parenthèse. Nous avons mis deux conditions dans la boucle, aussitôt qu'une des deux est fausse, la bouche est arrêtée. Changez la valeur de MIN pour 3 par exemple et vous allez comprendre...
Boucle while
Cette boucle teste à l'entré si la condition est vraie et boucle tant que cette dernière est vrai.i=0 j=5 while [ "$i" -lt "$j" ] # tant que i < j do echo "$i" i=`expr $i + 1` #ou i++ done
Boucle until
On pourrait dire que cette boucle est l'opposé de la boucle while. Cette boucle teste à l'entrée la condition et boucle tant que cette dernière est fausse.i=0 j=5 until [ "$i" -lt "$j" ] # tant que i < j do echo "$i" i=`expr $i + 1` #ou i++ done
#on affiche i tant que i et j sont identique, bouclerais à l'infini si on n'avait pas mis la condition de test à l'intérieur. i=0 j=0 until [ "$i" -lt "$j" ] do echo "$i" i=`expr $i + 1` #ou i++i if [ $i = 8 ]; then j=15 fi done
Boucler sur un répertoire
Nous allons maintenant voir comment parcourir un répertoire, cet opération est grandement utile lorsqu'on veut effectuer un certain traitement sur des fichiers: convertir, renommer, effacer... des fichiers.FILES="/home/collinm/Musique/*.mp3" for file in $FILES do echo $file; doneSi vous ne voulez pas employer de variable vous devez mettre le nom du répertoire entre `, ce qui donnerait
for file in `ls /home/collinm/Musique/*.mp3` #le reste est identique...
Nous avons complété la partie traitant des boucles. Un script avec tous les exemples peut être téléchargé ici
Aucun commentaire:
Enregistrer un commentaire