Correction TD n°3: Les Script Shell
Exercice 1
Écrire un script Shell SOMME qui calcule et affiche la somme des entiers de 1 à 100.
1 #!/bin/bash Shell
2
3 somme=0
4 for i in {1..100}; do
5 somme=$((somme + i))
6 done
7
8 echo "La somme des entiers de 1 à 100 est : $somme"
Exercice 2
Écrire un script Shell FACTORIELLE qui calcule et affiche la factorielle d’un nombre entier n accepté
à partir du clavier.
1 #!/bin/bash Shell
2
3 fact=1
4 for (( i=1; i<=$1; i++ )); do
5 fact=$((fact*i))
6 done
7 echo "Factorielle de $1 =$fact"
Exercice 3
Écrire un script Shell qui permet de vérifier si un utilisateur est connecté ou non.
N.B. utilisez la commande who.
1 #!/bin/bash Shell
2
3 read -p "Entrez le nom d'utilisateur à vérifier: " username
4
5 if who | grep -q "$username"; then
6 echo "L'utilisateur $username est connecté."
7 else
8 echo "L'utilisateur $username n'est pas connecté."
9 fi
Amanullah Menjli 1
Exercice 4
Écrire un script Shell qui recherche une chaîne dans un fichier.
1 #!/bin/bash Shell
2
3 read -p "Entrez le nom du fichier: " fichier
4 read -p "Entrez la chaîne à rechercher: " chaine
5
6 if [ ! -f "$fichier" ]; then
7 echo "Erreur : Le fichier '$fichier' n'existe pas."
8 exit 1
9 fi
10
11 if grep -q "$chaine" "$fichier"; then
12 echo "La chaîne '$chaine' a été trouvée dans le fichier '$fichier'."
13 else
14 echo "La chaîne '$chaine' n'a pas été trouvée dans le fichier '$fichier'."
15 fi
Exercice 5
Écrire un script Shell qui permet de copier le contenu d’un fichier dans un autre.
N.B: Le programme doit vérifier si les deux fichiers existent ou non.
1 #!/bin/bash Shell
2
3 read -p "Entrez le nom du fichier source: " source
4 read -p "Entrez le nom du fichier destination: " destination
5
6 if [ ! -f "$source" ]; then
7 echo "Erreur : Le fichier source '$source' n'existe pas."
8 exit 1
9 fi
10
11 if [ ! -f "$destination" ]; then
echo "Attention : Le fichier destination '$destination' n'existe pas. Il sera
12
créé."
13 fi
14
15 cat "$source" >> "$destination"
16 echo "Le contenu de '$source' a été ajouté (appended) à '$destination'."
Amanullah Menjli 2
Exercice 6
Écrire un script Shell qui permet de calculer le nombre de fichier ordinaires, répertoires et de liens
symboliques dans un répertoire quelconque.
1 #!/bin/bash Shell
2
read -p "Entrez le chemin du répertoire à analyser (ou '.' pour le répertoire
3
courant): " repertoire
4
5 if [ ! -d "$repertoire" ]; then
6 echo "Erreur : Le répertoire '$repertoire' n'existe pas."
7 exit 1
8 fi
9
10 fichiers=0
11 repertoires=0
12 liens=0
13
14 for element in "$repertoire"/*; do
[ -e "$element" ] || [ -L "$element" ] || continue # Gère le cas où le glob ne
15
correspond à rien
16
17 if [ -f "$element" ]; then
18 ((fichiers++))
19 elif [ -d "$element" ]; then
20 ((repertoires++))
21 elif [ -L "$element" ]; then
22 ((liens++))
23 fi
24 done
25
26 echo "Dans le répertoire '$repertoire':"
27 echo "Nombre de fichiers ordinaires: $fichiers"
28 echo "Nombre de répertoires: $repertoires"
29 echo "Nombre de liens symboliques: $liens"
Amanullah Menjli 3