Travaux Pratiques - Atelier Système D'Exploitation

Programming, Shell Scripting · lab

Voir tous les documents en systèmes d'exploitation et cloud

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