Département Informatique
TP et Télécommunications.
Programmation Shell Niveau: 1ère SIL
TP4: Les structures itératives
Objectifs
— Utiliser les structures itératives for, while et until dans un script Shell.
1 Notions de cours
1.1 La structure for
La structure répétitive for permet de parcourir une liste de valeurs et de boucler
autant de fois qu’il y a de valeurs. Cette structure a la forme générale suivante :
for variable in $liste_valeurs
do
# commandes à ex é cuter pour chaque it é ration .
done
$liste valeurs est une liste de valeurs séparées généralement par des espaces.
1.2 La structure while
La structure itérative while permet de boucler tant que la dernière commande placée
avant do retourne vrai . La forme générale de la structure est la suivante :
while
# commandes à ex é cuter pour chaque it é ration .
do
# commandes à ex é cuter tant que la derni è re commande plac é e
# avant do retourne vrai .
done
1.3 La structure until
A la différence de while, la structure until permet de boucler tant que la dernière
commande placée avant do retourne faux . Voici sa forme générale :
until
# commandes à ex é cuter pour chaque it é ration .
do
# commandes à ex é cuter tant que la derni è re commande plac é e
# avant do retourne faux .
done
Aymen FERJANI page 1 de 3 AU: 2017/2018
Département Informatique
TP et Télécommunications.
Programmation Shell Niveau: 1ère SIL
1.4 Astuces
1.4.1 Parcourir la liste des paramètres
for i in $ *
do
# A chaque it é ration , $i contient la valeur d ’ un param è tre .
done
1.4.2 Parcourir le contenu d’un fichier ligne par ligne
while read ligne
do
# A chaque it é ration , $ligne contient une ligne à partir
# du fichier $fich .
done < $fich
1.4.3 Parcourir le contenu d’un dossier
cd " $dossier "
for f in *
do
# A chaque it é ration , $f contient le nom d ’ un fichier qui
# se trouve sous $dossier .
done
2 Exercices pratiques
Exercice 1
Écrire le script ([Link]) qui devra parcourir la liste des paramètres, ensuite sous
le dossier courant et selon la valeur de chaque paramètre :
— Si la valeur commence par une majuscule, le script crée un dossier ayant comme
nom cette valeur.
— Sinon, le script crée un fichier ayant comme nom cette valeur.
— Si le nom existe déjà, le script ne fera rien.
Voici un exemple qui teste si une chaı̂ne $ch commence par une majuscule :
if [ $ ( echo $ch | grep " ^[ A - Z ] " | wc -l ) - eq 1 ]
then
echo " $ch commence par une majuscule "
else
echo " $ch ne commence pas par une majuscule "
fi
Aymen FERJANI page 2 de 3 AU: 2017/2018
Département Informatique
TP et Télécommunications.
Programmation Shell Niveau: 1ère SIL
Exercice 2
Écrire le script ([Link]) qui prend en paramètre le chemin d’un fichier composé par
des lignes dont chacune représente le nom, le prénom et la note d’un étudiant.
Chaque ligne a la forme suivante :
nom * prenom * note
Le script devra parcourir ce fichier ligne par ligne, ensuite afficher le nombre d’étudiants
total ainsi que le nombre d’étudiants ayant une note supérieure ou égal à 10.
Utiliser la commande cut pour récupérer la note d’un étudiant.
Exercice 3
Écrire le script ([Link]) qui prend en paramètre le chemin d’un dossier.
Ce script devra d’abord créer 2 dossiers (PDF) et (MP3) sous le dossier passé en
paramètre. Ensuite, il parcourt le contenu de ce dernier et effectue les actions suivantes :
— Tout fichier ordinaire rencontré dont le nom se termine par ”.pdf” sera déplacé vers
(PDF).
— Tout fichier ordinaire rencontré dont le nom se termine par ”.mp3” sera déplacé
vers (MP3).
Un message sera affiché après chaque déplacement.
Aymen FERJANI page 3 de 3 AU: 2017/2018