[Bash] Problème algorithmique
Bonjour,
Donc je dois faire un script qui reçoit en paramètre un répertoire et de le parcourir récursivement et de voir si le répertoire donnée en paramètre est un paquet R ou pas.
(la fonction récursive est OK, mais lorsque je veux faire des testes que cela se complique).
Un paquet R est un dossier qui contient les fichiers A et B et doivent être non nulle, un paquet R peut contenir (ou pas) un sous dossier R mais si ce dossier existe alors il ne doit pas être vide.
(le répertoire donné en paramètre ne peut pas être lui même un paquet R et si on trouve un paquet R on ne doit pas vérifié que ce sous dossier possède un paquet R )
Au départ j'ai su stocker tout les dossiers qui ont les fichiers A et B (non nulle) dans un tableau puis je pouvais les afficher, mais lorsque je teste si le dossier R est vide ça se complique.
(j'ai déjà testé si ma commande pour voir si un fichier est vide ou pas elle est bonne mais lorsque j'imbrique le tout çà ne marche pas)
voici mon code :
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 47 48 49 50 51 52 53 54
|
#!/bin/bash
#------------fonction recursive--------------------
parcour()
{
for item in $1/*
do
[ ! -d "$item" ] && continue
if checkR "$item"
then
echo "$item"
else
parcour "$item"
fi
done
}
#-------------------reperer les paquets R----------------------
checkR()
{
message="false"
[ ! -s "$1/A" ] && [ ! -s "$1/B" ] && message="true"
if [ -d "$1/R" ] && [ ! $(ls "$1/R" | wc -l) -gt 0 ]
then
message="false"
fi
[ $message="true" ] && return 1 || return 0
}
#---------------------------------------------------------------
resultat=$(parcour $1)
#stock les paquet R dans un tableau
read -a tableau <<<$resultat
for var in "${tableau[@]}"
do
echo "${var}"
done
exit |
Aidez-moi please, je sais vraiment pas ce qui cloche,
Je vous remercie
Dean.