Bonjour à tous et à toutes,
Dans un script bash, je voudrai décrémenter un compteur à chaque fois qu'une fonction c'est exécutée. Cette fonction est elle même appelée par un find.
Actuellement, j'ai bricolé un truc comme ça :
Une première fonction va trouver les fichiers qui vont être traités par la suite dans mon arborescence
Cette fonction elle même est appelée par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function comptage { xxxx=$(find $source -type f \( -name "*.doc" -or -name "*.xls" \) | wc -l) echo "$xxxx" } export -f comptage
Jusque là tout fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 compteur=0 && export compteur compteur=$(comptage)
J'ai ensuite ma seconde fonction qui, elle va faire le traitement proprement dit
Le traitement lui-même n'a pas d'importance dans mon souci puisqu'il fonctionne parfaitement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function traitement { echo "$compteur et du texte" "mon code qui fonctionne" $compteur=`expr $compteur - 1` } export -f traitement
La fonction traitement est appelée par
Là aussi, l'appel de la fonction marche sans aucun souci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part find $source -type f \( -name "*.doc" -or -name "*.xls" \) -exec bash -c 'traitement '$0' ' {} \; ;
Là où le bas blesse, c'est quedans la fonction affiche toujours la valeur initiale, non décrémentée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "$compteur et du texte"
Si quelqu'un a une idée, je l'en remercie par avance.
Partager