Administration Unix - TP séance 05
À la fin de la séance, déposez votre fichier de réponses sur la page Ametice en suivant bien les instructions, même si vous n'avez pas fini la planche ; lorsque vous aurez terminé, vous pourrez re-déposer la version finale.
Exercice 1 : un premier script
a) Recopiez le script hello.sh
du cours et testez-le.
b) Invoquez le script en lui passant un argument ; le texte affiché est-il modifié ?
c) Recopiez le script en exo51.sh
, et modifiez-le de telle sorte que
-
sans argument, il affiche la même chose
$ ./exo51.sh Hello world!
-
avec un argument, il affiche de cette manière :
$ ./exo51.sh Paul Hello Paul ! $ ./exo51.sh Jacques Hello Jacques !
Exercice 2 : tests de fichiers
a) Que fait le script exo52.sh
suivant ? Recopiez-le et testez-le.
#! /bin/bash
file=$1
if test -e "$file" ; then
echo "$file existe"
fi
b) Modifiez le script pour qu'il indique aussi si file
n'existe pas.
c) Modifiez-le pour qu'il indique en plus, si file
existe, si c'est un fichier
régulier, un répertoire ou un lien symbolique.
d) Modifiez-le pour qu'il affiche en plus, si le script est appelé sans argument, le message suivant (ce sera le mode d'emploi du script) sur la sortie d'erreur, puis échoue :
USAGE: ./exo52.sh file
affiche la nature du fichier
Exercice 3 : échange d'arguments
a) Réalisez un script exo53.sh
qui va afficher les deux arguments qu'on
lui a passé en les échangeant ; par exemple :
$ ./exo53.sh foo bar
bar foo
$ ./exo53.sh ga bu
bu ga
b) Modifiez-le pour qu'il affiche en plus, si le script est appelé avec moins de 2 arguments, le message suivant sur la sortie d'erreur, puis échoue :
USAGE: ./exo53.sh mot1 mot2
affiche mot2 mot1
c) Modifiez-le pour que de plus, s'il y a au moins 3 arguments, il les réaffiche en échangeant les 2 premiers :
$ ./exo53.sh mi fa sol
fa mi sol
$ ./exo53.sh ga bu zo meu
bu ga zo meu
$ ./exo53.sh $(seq 10)
2 1 3 4 5 6 7 8 9 10
Indice : pensez à shift
d) Adaptez le message d'usage de la question b).
Exercice 4 : argument optionnel
a) Réalisez un script exo54.sh
, dont l'usage sera :
./exo54.sh [-l|-u|-i] mot1...
Invoqué sans option, le script affichera les mots passés en argument :
$ ./exo54.sh Je fais du LaTeX
Je fais du LaTeX
Invoqué avec l'option -l
, le script les affichera en minuscules :
$ ./exo54.sh -l Je fais du LaTeX
je fais du latex
Invoqué avec l'option -u
, le script les affichera en majuscules :
$ ./exo54.sh -l Je fais du LaTeX
JE FAIS DU LATEX
Invoqué avec l'option -i
, le script inversera la casse :
$ ./exo54.sh -l Je fais du LaTeX
jE FAIS DU lAtEx
b) Améliorez le script pour qu'il affiche l'usage (comme dans les exercices
précédents : précédé de "USAGE:"
, dans la sortie d'erreur, puis il échoue)
dans les situations suivantes :
- appelé sans argument ;
- appelé avec une option correcte mais sans mot après.