Travaux Pratiques
Atelier Système D'Exploitation
Fascicule N°4
Amine DHRAIEF
ESEN, Université de la Manouba
A.U 2017-2018
1/7
1 La Programmation De Base En Shell
1.1 Le premier script
1. Créerez avec l’éditeur vim un fichier listf contenant la ligne ls -aCF
2. Rendez ce script exécutable
3. Quelle est la fonction de script ?
……………………………………………………………………………………………………….
………………………………………………………………………………………………………
………………………………………………………………………………………………………
1.2 Le passage des paramètres
Le script listf ne s’applique qu’au répertoire courant. On peut le rendre plus général en lui
transmettant le nom d’un répertoire en argument lors de l’invocation. Pour ce faire, les variables 1,
2, ..., 9 permettent de désigner respectivement le premier, le deuxième, ..., le neuvième paramètre
associés à l’invocation du script.
1. Avec vim, modifiez le fichier listf de la façon suivante
2/7
2. Testez ce script sur vos répertoires.
1.2.1
Généralisation
Le nombre de paramètres passés en argument à un script n’est pas limité à 9 ; toutefois seules les
neuf variables 1, ..., 9 permettent de désigner ces paramètres dans le script. La commande shift
permet de contourner ce problème. Après shift, le ième paramètre est désigné par $i 1.
1. Le script echopara contient :
Publicité
2. Son exécution donne :
3/7
1.3 Les variables spéciales
En plus des variables 1, 2, ..., 9, le shell prédéfinit des variables facilitant la programmation.
0
#
*
?
$
Exemple
contient le nom sous lequel le script est invoqué,
contient le nombre de paramètres passés en argument,
contient la liste des paramètres passés en argument,
contient le code de retour de la dernière commande exécutée,
contient le numéro de process (PID) du shell (décimal).
1.4 Les instructions de lecture et d’écriture
Ces instructions permettent de créer des fichiers de commandes interactifs par l’instauration d’un
dialogue sous forme de questions/réponses. La question est posée par l’ordre echo et la réponse est
obtenue par l’ordre read à partir du clavier.
Écrire un script shell anniversaire.sh qui demande la saisie de votre nom, votre prénom,
votre date de naissance en posant les questions séparées :
• Votre Prénom ?
• Votre Nom ?
• Votre jours de votre naissance (JJ) ?
4/7
• Le mois de votre naissance (MM) ?
• L'année de votre naissance (AAAA) ?
Le script affiche ensuite le prénom et le nom ainsi que la date de naissance sous le format :
• Prénom Nom est née le JJ/MM/AAAA.
Publicité
………………………………………………………………………………………………………..
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
1.5 Les instructions conditionnelles
Syntaxe
:
if commande
then commandes
fi
if commande
then commandes1
else commandes2
fi
if commande1
then commandes1
elif commande2
then commandes2
else
commandes0
fi
1. Augmenter le script shell anniversaire.sh pour qu'il affiche si l'année de votre
naissance est bissextile ou non. Une année A est dite bissextile Si A n'est pas divisible par
4, l'année n'est pas bissextile. Si A est divisible par 4, l'année est bissextile sauf si A est
Publicité
divisible par 100 et pas par 400. Deux affichages sont possible à la fin du script :
◦ Prénom Nom est née le JJ/MM/AAAA. L'année de sa
naissance AAAA est bissextile.
◦ Prénom Nom est née le JJ/MM/AAAA. L'année de sa
naissance AAAA n'est pas bissextile.
5/7
………………………………………………………………………………………………………..
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
Syntaxe
:
case chaine in
motif1) commandes 1 ;;
motif2) commandes 2 ;;
....
....
Publicité
motifn) commandes n ;;
esac
1. Augmenter le script shell anniversaire.sh pour qu'il affiche le mois de naissance en
toutes lettres. Un exemple d'affichage serait
◦ Prénom Nom est née le JJ/MM/AAAA. L'année de sa
naissance AAAA est : bissextile. Le mois de sa
naissance MM est : JANVIER
6/7
………………………………………………………………………………………………………..
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
7/7