Les Boucles
Les Boucles
Les Boucles
Les boucles
plus
Accueil Cours Reprenez le contr ô '
le à l aide de Linux ! Les boucles
LES BOUCLES
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 n y échappe pas
' ' !
: « »
while boucler tant que
'
Le type de boucle que l on rencontre le plus couramment en bash est while .
TANT QUE test
FAIRE
‐‐‐‐‐‐> effectuer_une_action
RECOMMENCER
En bash , 'é
on l crit comme ceci :
console
while [ test ]
do
echo 'Action en boucle'
done
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/lesboucles3 1/6
11/10/2016 OpenClassrooms Les boucles
-
point virgule :
while [ test ]; do
echo 'Action en boucle'
done
'
#!/bin/bash
while [ ‐z $reponse ] || [ $reponse != 'oui' ]
do
read ‐p 'Dites oui : ' reponse
done
1. -
Est ce que $reponse est vide ?
2. -
Est ce que $reponse est di ffé rent de oui ?
Comme il s agit d un OU' ' ( || ), '
tant que l un des deux tests est vrai , on recommence la boucle . Cette derni è re pourrait se
traduire par : « Tant que la r é ponse est vide ou que la r é ponse est di ffé
rente de oui ».
' ' ' (
verrez ).
Essayons ce script :
Dites oui : euh
Dites oui : non
Dites oui : bon
Dites oui : oui
Comme vous pouvez le voir il ne s arr , ' ê te que lorsque l on a tap ' é oui !
Il existe aussi le mot cl é until , '
qui est l exact inverse de while . Il signifie « '
Jusqu à ce que ».
'
:
Avertissement pour ceux qui ont d é jà fait de la programmation : le for en bash ne se comporte pas de la m ê me
mani è re que le for auquel vous ê tes habitu és dans un autre langage , comme le C ou le PHP Lisez donc .
attentivement .
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/lesboucles3 2/6
11/10/2016 OpenClassrooms Les boucles
La boucle for permet de parcourir une liste de valeurs et de boucler autant de fois qu il y a de valeurs ' .
Concr è
tement , la forme d un ' for est la suivante :
console
POUR variable PRENANT valeur1 valeur2 valeur3
FAIRE
‐‐‐‐‐‐> effectuer_une_action
VALEUR_SUIVANTE
La variable va prendre successivement les valeurs valeur1 , valeur2 , valeur3 . La boucle va donc ê tre ex é é
cut e trois fois
#!/bin/bash
for variable in 'valeur1' 'valeur2' 'valeur3'
do
echo "La variable vaut $variable"
done
console
La variable vaut valeur1
La variable vaut valeur2
La variable vaut valeur3
Vous pouvez donc vous servir du for pour faire une boucle sur une liste de valeurs que vous d é finissez :
console
#!/bin/bash
for animal in 'chien' 'souris' 'moineau'
do
echo "Animal en cours d'analyse : $animal"
done
console
Animal en cours d'analyse : chien
Animal en cours d'analyse : souris
Animal en cours d'analyse : moineau
#!/bin/bash
liste_fichiers=`ls`
for fichier in $liste_fichiers
do
echo "Fichier trouvé : $fichier"
done
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/lesboucles3 3/6
11/10/2016 OpenClassrooms Les boucles
Fichier trouvé : boucles.sh
Fichier trouvé : conditions.sh
Fichier trouvé : variables.sh
On pourrait faire un code plus court sans passer par une variable $liste_fichiers en é
crivant :
#!/bin/bash
for fichier in `ls`
do
echo "Fichier trouvé : $fichier"
done
#!/bin/bash
for fichier in `ls`
do
mv $fichier $fichier‐old
done
$ ls
boucles.sh conditions.sh variables.sh
$ ./boucles.sh
$ ls
boucles.sh‐old conditions.sh‐old variables.sh‐old
À vous de jouer ! Essayez de cr éer un script multirenommage.sh , reposant sur ce principe , qui va rajouter le su ff
ixe ‐old …
' !
console
./multirenommage.sh *.txt
En bash , comme on l a vu ' , le for permet de parcourir une liste de valeurs . Toutefois , en trichant un peu à l aide de la '
commande seq , il est possible de simuler un for classique :
console
#!/bin/bash
for i in `seq 1 10`;
do
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/lesboucles3 4/6
11/10/2016 OpenClassrooms Les boucles
echo $i
done
Explication :
seq g é è
n re tous les nombres allant du premier param è
tre au dernier param è
tre , donc 1 2 3 4 5 6 7 8 9 10.
console
1
2
3
4
5
6
7
8
9
10
Si vous le voulez , vous pouvez changer le pas et avancer de deux en deux par exemple . Dans ce cas ,il fauté crire
En r é sum é
Pour ex é
cuter une s érie de commandes plusieurs fois , on utilise des boucles .
while '
permet de boucler tant qu une condition est remplie . Le fonctionnement des conditions dans les boucles est
'
J ai termin é ce chapitre et je passe au suivant
'
L auteur
Mathieu Nebra
, -
' )
Entrepreneur à plein temps auteur à plein temps et co fondateur
d OpenClassrooms :o
Premium
Premium
https://openclassrooms.com/courses/reprenezlecontrolealaidedelinux/lesboucles3 5/6