Correction Atelier 8 : Les Scripts shells
Exercice 1
Ecrire un script shell qui affiche le message « Bonjour les étudiants »
#!/bin/bash
echo 'Bonjour tout les étudiants'
Exercice 2
Ecrire un script shell qui affiche la valeur de son paramètre à l’écran
Exemple : la commande ./monscript toto doit afficher parametre : toto
#!/bin/bash
echo "parametre: $1"
Exercice 3
1/ Ecrire un script somme1.sh qui calcule la somme de deux nombres passés en paramètres et l’affiche à l’écran
#!/bin/bash
echo " La somme de $1 et de $2 est égale à expr $1 + $2"
2/ Ecrire un script somme2.sh qui calcule la somme de deux nombres saisis avec la commande read et l’affiche à l’écran
#!/bin/bash
read -p 'donner le premier nombre:' x
read -p 'donner le deuxième nombre:' y
echo "La somme de $x et de $y est égale à expr $x + $y"
Exercice 4
Ecrire un script qui prend deux nombres en paramètres et affiche le plus grand des deux.
#!/bin/bash
if [ $1 -gt $2 ]
then "echo $1 est supérieur à $2"
else "echo $2 est supérieur à $1"
fi
Exercice 5
Reprendre le script de l’exercice 2. Que se passe-t-il si vous lancez le script sans indiquer de paramètre ? Ajouter des instructions pour que le script affiche un message d’erreurs si l’utilisateur ne passe pas 1 et 1 seul paramètre.
#!/bin/bash
if [ -z $1 ] ; then
echo 'paramètre manquant'
elif [ $# -ne 1 ]; then
Publicité
echo 'Entrer un seul paramètre'
else
echo "parametre $1"
fi
Exercice 6
1/ Ecrire un script qui affiche la valeur 0 si le premier paramètre reçu est un nombre entier et 1 sinon (utiliser grep).
Astuce : parfois, on ne s’intéresse pas à la sortie d’une commande mais à son code de retour. On peut alors rediriger la sortie de cette commande au fichier corbeille /dev/null
#!/bin/bash
if [ -z $1 ]; then
echo paramètre manquant
else
echo $1|grep -v [^0-9] >/dev/null
echo $?
fi
2/ Ecrire un script qui demande à l’utilisateur de saisir un nombre et vérifie si les caractères saisis correspondent à un nombre.
#!/bin/bash
read -p "Entrer un entier:" n
echo $n|grep -v [^0-9] >/dev/null
if [ $? -eq 0 ];then
echo "$n est un nombre"
else
echo "$n n'est pas un nombre"
fi
Exercice 7
Ecrire un script qui affiche tous les paramètres qu’il a reçu
#!/bin/sh
for i in $\*; do
echo $i
done
Exercice 8
Ecrire un script qui calcule la somme de tous les nombres passés en paramètres
#!/bin/sh
Publicité
s=0
for i in $\*; do
s=expr $s + $i
done
echo "la somme de $# paramètres est $s"
Exercice 9
Reprendre le script de l’exercice 3 question 2 pour ne permettre à l’utilisateur de saisir que de nombres entre 0 et 20.
#!/bin/bash
x=-1
y=-1
until [ $x -le 20 -a $x -ge 0 ];do
read -p 'donner le premier nombre entre 0 et 20 :' x
done
until [ $y -le 20 -a $y -ge 0 ];do
read -p 'donner le deuxième nombre entre 0 et 20 ' y
done
echo La somme de $x et de $y est égale à expr $x + $y
Exercice 10 :
Écrire un script de gestion des répertoires qui fonctionne avec un menu de ce style:
1 - Choisir un répertoire de travail.
2 - Afficher les attributs du répertoire.
3 - Afficher le contenu du répertoire.
4 - Créer un sous répertoire.
5 - Supprimer un sous répertoire.
q – quitter
#!/bin/bash
choix=""
repertoire=""
while [ 1 ];do
echo -e "-------------------------------\n"
echo -e "1- Choisir un répertoire de travail \n"
echo -e "2- Afficher les attributs du répertoire \n"
Publicité
echo -e "3- Afficher le contenu du répertoire \n"
echo -e "4- Créer un sous répertoire \n"
echo -e "5- Supprimer un sous répertoire \n"
echo -e "q- quitter \n"
echo -e "-------------------------------\n"
read -p 'Entrer votre choix: ' choix
case $choix in
"1")
repertoire=""
read -p 'Entrer le chemin du répertoire: ' rep
if [ ! -e $rep ];then
echo "Le chemin spécifié n'existe pas"
elif [ ! -d $rep ]; then
echo "Le chemin spécifié n'est pas un répertoire"
else
repertoire=$rep
fi;;
"2")
if [ -z $repertoire ];then
echo "choisir tout d'abord le répertoire"
else
echo "les attributs du $repertoire sont:"
ls -ld $repertoire
fi;;
"3")
if [ -z $repertoire ];then
echo "choisir tout d'abord le répertoire"
else
echo "le contenu de $repertoire est:"
ls $repertoire
fi;;
"4")
Publicité
if [ -z $repertoire ];then
echo "choisir tout d'abord le répertoire"
else
read -p "Donner le nom du sous répertoire à créer " srep
mkdir $repertoire/$srep
echo "Le sous répertoire $srep est créé avec succès"
fi;;
"5")
if [ -z $repertoire ];then
echo "choisir tout d'abord le répertoire"
else
read -p "Donner le nom du sous répertoire à supprimer: " srep
if [ ! -e $repertoire/$srep ];then
echo "Le sous répertoire $srep n'existe pas"
elif [ ! -d $repertoire/$srep ];then
echo "Le nom spécifié n'est pas un répertoire"
else
rmdir $repertoire/$srep
echo "le sous répertoire $srep est supprimé avec succès"
fi
fi;;
"q")
exit;;
\*)
echo "choix invalide"
esac
done