Bonjour la communauté![]()
Durant la période de confinement j'apprends le bash, je coince pour réliser ce script de l'exercice suivant...
Exercice 1
Écrire un script bash qui prend les 3 arguments suivants :
• un chemin de dossier : si celui-ci n'est pas valide (n'est pas un dossier, indice : tester avec -d) écrire un message d'erreur et demander à saisir un chemin jusqu'à ce qu'il soit valide.
• une extension de fichier : si celle-ci n'est pas correcte (ne suit pas une certaine expression régulière sachant que les extensions commencent par un caractère . suivi d'au moins une lettre ou un nombre, indice : tester avec =~) écrire un message d'erreur et demander à saisir une extension jusqu'à ce qu'elle soit valide.
• un nombre : si celui-ci n'est pas valide (ne suit pas une certaine expression régulière, indice : tester avec =~) écrire un message d'erreur et demander à saisir un nombre jusqu'à ce qu'il soit valide.
Ce script va compter le nombre de fichiers qui ont l'extension passée en argument (ou saisie) (indice : tester avec =~) dans le dossier passé en argument (ou saisi).
Si le nombre de fichiers est inférieur au nombre passé en argument (ou saisi) affiche le message "Vous n'avez pas assez de fichiers d'extension "X, X étant l'extension passée en argument ou saisie.
Si le nombre de fichiers est supérieur au nombre passé en argument (ou saisi) affiche le message "Vous avez trop de fichiers d'extension "X, X étant l'extension passée en argument ou saisie.
Si le nombre de fichiers est égal au nombre passé en argument (ou saisi) affiche le message "Vous le bon nombre de fichiers d'extension "X, X étant l'extension passée en argument ou saisie.
Bonus : si le nombre est correct, afficher l'ensemble des fichiers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 pwd echo 'Bonjour, vous vous trouvez dans le répertoire 'pwd' ' if [ "$#" -eq 0 ]; then echo "Saisir le répertoire" read -r dossier else dossier=$dossier fi cd $dossier echo "Veuillez saisir le chemin de dossier à analyser" #echo au fonctionnement similaire au précédent read dossier #lecture du dossier dossier=( $dossier ) # il s'agit de la valeur entrée par le user qui sera stockée dans $dossier nbFichier=0 #initialisation auto à valeur 0 pour que le script puisse compter les fichiers nbDossier=0 #initialisation auto à valeur 0 pour que le script puisse compter des dossiers nbExe=0 #initialisation auto à valeur 0 pour que le script puisse compter les executables for d in ${dossier[@]} #boucle en place qui va s'appliquee pour chaque dossiers présents dans le répertoire sélectionner do if [ ! -d "$d" ] #condition, si le user entre une valeur inconnue (nom de dossier inconnu) then echo 'Erreur, le dossier '$d' n existe pas' #le user sera prévenu que le dossier n'existe pas! continue fi cd $d for file in * #pour chaque fichier(s) présent(s) dans l'intégralité du répertoire sélectionné do #nouvelle tâche à effectuée si condition précédente remplie if [ -d "$file" ] then nbDossier=$((nbDossier+1)) fi if [ -f "$file" ] then nbFichier=$((nbFichier+1)) fi if [ -x "$file" ] then nbExe=$((nbExe+1)) fi done done echo 'Nb fichier : '$nbFichier echo 'Nb sous-dossier: '$nbDossier echo 'Nb executable : '$nbExe
Partager