Vous êtes sur la page 1sur 4

Universit Tunis El Manar - Institut Suprieur d'Informatique

TP Environnement UNIX - L1 ARS - Anne universitaire 2009/2010

TP n3 : Script Shell

Introduction

Dans les prcdents travaux pratiques, les diffrentes commandes ont t excutes sur la ligne
de commande. Il est possible de crer des fichiers contenant un ensemble dinstructions et de
raliser ainsi de vritables programmes : les scripts Shell.

Premiers Scripts

1. Ecrire un script qui affiche la date et le rpertoire courant de travail.


2. Ecrire un script qui affiche son nom, le nombre et la liste de ses arguments.
3. Ecrire un script Shell permettant deffectuer la somme de deux valeurs numriques saisies au
clavier.
4. Modifier ce script pour quil additionne deux valeurs passes comme paramtres de la ligne de
commande.

Instructions Conditionnelles

1. Ecrire un script qui prend un seul paramtre. Si ce paramtre est un rpertoire, alors il liste
son contenu, si cest un fichier alors il affiche son contenu, sinon il affiche un message
derreur.
2. Ecrire un script qui prend un seul paramtre de type rpertoire et qui permet :
- de lister les sous rpertoires de ce rpertoire.
- dafficher le nombre des sous rpertoires de ce rpertoire.
- dafficher le nombre de fichiers ordinaires de ce rpertoire..

Instructions choix multiples

1. Ecrire un script qui prend deux paramtres et qui effectue soit laddition, soit la multiplication,
soit la division, soit la soustraction suivant un choix lu au clavier.
2. Modifier ce script pour que le choix soit pass comme troisime paramtre de la ligne de
commande.

Boucle for

1. Ecrire un script qui prend un nombre quelconque de paramtres et qui affiche pour chaque
paramtre son type (fichier ordinaire, rpertoire, autre).
2. Ecrire un script Shell qui prend un seul paramtre de type rpertoire. Le script doit parcourir
le rpertoire et afficher chaque fois si le fichier est accessible en excution ou non.
1

3. Ecrire un script qui prend un nom de rpertoire et qui affiche pour chaque fichier ordinaire de
ce rpertoire tous les fichiers de mme noms se trouvant dans des rpertoires diffrents.
4. Ecrire un script qui prend deux noms de rpertoires et qui compte le nombre de fichiers ayant
le mme nom dans les deux rpertoires.
5. Ecrire un script qui calcule la somme de tous ses paramtres.

Boucle While

1. Ecrire un script qui prend 3 paramtres, le premier est le nombre multiplier, les deux autres
sont les bornes de la table de multiplication.
Exemple :
$bash mul 4 2 6
8
12
16
20
24
2. Ecrire un script qui prend deux paramtres et qui calcule le premier la puissance le deuxime.
3. Ecrire un script qui prend un paramtre de type numrique et qui permet :
- dafficher tous les diviseurs de ce paramtre.
- dafficher si ce paramtre est un nombre premier ou non.

Compte rendu

Exercice 1
Ecrire un script Shell sous le nom sujet1 qui, accepte un seul argument, les traitement faire se
font selon la nature de largument
1. Si largument est un fichier ordinaire : Rediriger vers le fichier exemple toutes les
lignes qui ne contiennent quun seul chiffre du fichier pass en argument.
2. Si largument est un rpertoire : Chercher tous les fichiers ordinaires de ce rpertoire,
et afficher leurs nombre .
3. Si largument est un entier : calculer le cube de cet entier.(en utilisant la boucle while)
NB : Il faut prvoir tous les cas derreurs possibles et afficher les messages appropris.

Exercice 2
Soit le script sujet2 suivant :
if [ $# -ne 2 ]
then
echo " vrifier les arguments, usage : $0 nomrep choix"
elif [ ! d $1 ]
then
echo $1 n\est pas un rpertoire
else
case $2 in
1) for i in `ls $1`

2)
3)
4)
*)
esac
fi

do
if [ f $i ]
then
cat $i | grep ^[A-Z]
fi
done ;;
ls l $1 | grep ^d | wc l ;;
chmod g-x $1 ;;
echo "fin du script $0" ;;
echo ERREUR : $2 (1-4) ; ;

Complter le tableau ci-dessous par le rsultat dexcution du script aprs chaque appel (on
suppose quil existe un rpertoire nomm R dans le rpertoire courant. Chaque rsultat doit tre
justifi.
Appel Script

Rsultat

..
...............

$ bash

sujet2

$ bash

sujet2

........
............................................................................................

$ bash

sujet2

........
............................................................................................

$ bash

sujet2

........
............................................................................................

$ bash

sujet2

4 3

Exercice 3
Ecrire un script Shell sous le nom sujet3 qui, prend en argument deux chanes de caractres et
qui effectue les traitement suivants :
Traitement 1
Si les deux arguments correspondent deux fichiers ordinaires contenus dans le rpertoire
courant, le script doit rediriger le contenu du premier fichier vers le deuxime fichier sans craser
son contenu initial.
Traitement 2
Si les deux arguments correspondent deux sous rpertoires contenus dans le rpertoire courant,
le script doit compter le nombre de fichiers ayant le mme nom dans les deux sous rpertoires.
Traitement 3
Si le premier argument est un rpertoire et le deuxime est une chane de caractre
alphabtique. Le script doit chercher tous les fichiers contenus dans le rpertoire pass en premier
argument, dont le nom correspond la chane passe en deuxime argument.
NB : Il faut prvoir tous les cas derreurs possibles et afficher les messages appropris.