Correction Atelier 8 : Les Scripts Shells

1/4
100%

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

Correction Atelier 8 : Les Scripts Shells

Shell Scripting / Linux Command Line · notes

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

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