Script qui prend 3 arguments
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:
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 |
déplacement du code dans le premier message
re,
ah c'est super sympa les gars :) merci d'avance!! rien que le fait de vous intéressé a mon soucis, ca me fait super plaisir :)