0% ont trouvé ce document utile (0 vote)
128 vues10 pages

Introduction aux boucles en script shell

Transféré par

medprof5
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
128 vues10 pages

Introduction aux boucles en script shell

Transféré par

medprof5
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

12/17/2019

9. Les boucles

Elles permettent la répétition d’un bloc de


commandes soit un nombre limité de fois, soit
conditionnellement.
Toutes les commandes à exécuter dans une
boucle se placent entre les commandes do et
done.

9. Les boucles
a. Boucle for
La boucle for ne se base pas sur une quelconque
incrémentation de valeur mais sur une liste de
valeurs, de fichiers ...
for var in liste
do
commandes à exécuter
done
La liste représente un certain nombre d’éléments
qui seront successivement attribués à var.

1
12/17/2019

Exercice:
Créer un script qui prend un nombre en saisie et l'élève à sa propre
puissance, l'usage de la boucle for est imposé.
#!/bin/bash
echo "Saisir une valeur"
read value
result=1
for (( i=0 ; i<$value ; i++ )); do
let result=$result*$value
done
echo "$value^$value = $result"
123

Exercice:

Que fait le script suivant??


For file in /home/stage/*
Do
Cp $file /tmp
Done

124

2
12/17/2019

Exercice:

Créer un script permettant d'afficher la liste des fichiers du


répertoire /etc accessibles en lecture.
Créer un script permettant d'afficher la liste des fichiers du
répertoire /etc accessibles en écriture

125

Exercice:
for FILE in /etc/*
do
if test -r $FILE
then
echo $FILE
fi
done

for FILE in /etc/*


do
if test -w $FILE
then
echo $FILE
fi 126

done

3
12/17/2019

b. Boucle while:
La commande while permet une boucle conditionnelle « tant que ».
Tant que la condition est réalisée, le bloc de
commande est exécuté. On sort si la condition n’est plus valable.
Syntaxe:
While condition
Do
….
….
Done

127

b. Boucle while:
La commande while permet une boucle conditionnelle « tant que ».
Tant que la condition est réalisée, le bloc de
commande est exécuté. On sort si la condition n’est plus valable.
Exemple:

Supposons, par exemple que vous souhaitiez afficher les 100


premiers nombres (pour une obscure raison)
#!/bin/bash
# script7.sh boucle while
i=0 ;
while [ $i -lt 100 ]
do
i=$[$i+1]
done
128

4
12/17/2019

b. Boucle while:
La commande while permet une boucle conditionnelle « tant que ».
Tant que la condition est réalisée, le bloc de
commande est exécuté. On sort si la condition n’est plus valable.
Exemple:
#!/bin/bash
i=0
While [ ’’ $i ’’–lt 3 ]
Do
echo $i
((i++))
done
#!/bin/bash
For i in 0 1 2
Do
echo $i
done 129

le code suivant ne permet pas de calculer le nombre de


lignes du fichier

#!/bin/bash
j=1
cat toto|while read ligne
do
((j++))
done
echo "$j ligne dans toto"

130

5
12/17/2019

b. Boucle while:
Explications :
la commande cat fichier va envoyer le contenu du fichier vers la
sortie standard.
Ici, un tube | (ou pipe en anglais) permet de re diriger les données
destinées à la sortie standard (i.e. Le résultats de cat fichier) vers
l'entrée standard de la commande suivante.
La commande suivante est ici une boucle while, qui lit sur son entrée
standard grace à la commande read. Read lit ligne par ligne. A chaque
itération de la boucle while, une nouvelle ligne est copiée dans la
variable ligne.
A la fin du fichier, la commande cat vas envoyer un signal « End Of
File » vers la sortie standard. Ce signal, est alors capté par la
commande read qui retourne alors la valeur 1, ce qui rend négatif le
test effectuer par l'opérateur while. (essayer read puis CTRL+D puis
echo $?) 131

b. Boucle while:
read puis CTRL+D puis echo
on peut compter le nombre de lignes
$?)
du fichier essai.txt précédent par :
i=0
while read ligne
do
i=$((i+1))
done < essai.txt
echo $i
132

6
12/17/2019

b. Boucle until:
La commande until permet une boucle conditionnelle « jusqu’à ».
Dès que la condition est réalisée, on sort de la boucle.
until condition
do
commandes
done
ou :
until
bloc d’instructions formant la condition
do
commandes
done

133

Répète les commandes jusqu'à ce que la condition soit vraie


soit tant qu'elle est fausse.

•Rupture avec break,


•Reprise avec continue.
while true; do commandes; done

134

7
12/17/2019

135

136

8
12/17/2019

Programmation shell
2. Arguments d’un script
a. Paramètres de position
Les paramètres de position sont aussi des
variables spéciales utilisées lors d’un passage
de paramètres à un script.

Programmation shell
2. Arguments d’un script
Liste de variables prépositionnées¶
•$0 : nom du script. Plus précisément, il s'agit du paramètre 0 de la ligne de commande, équivalent
de argv[0]
•$1, $2, ..., $9 : respectivement premier, deuxième, ..., neuvième paramètre de la ligne de
commande
•$* : tous les paramètres vus comme un seul mot
•$@ : tous les paramètres vus comme des mots séparés : "@"équivautà"@"équivautà"1" "$2" ...
•$# : nombre de paramètres sur la ligne de commande
•$- : options du shell
•$? : code de retour de la dernière commande
•\$\$ : PID du shell
•$! : PID du dernier processus lancé en arrière-plan
•$_ : dernier argument de la commande précédente

9
12/17/2019

Programmation shell
2. Arguments d’un script

10

Vous aimerez peut-être aussi