[sh] pb d'arithmétique

B@|-|@N Messages postés 386 Statut Membre -  
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   -
Bonjour à tous.

Voilà mon problème :
nb_files=0;
while read _file; do
        if [ -s $destination_dir/$_file".txt" ]; then
                nb_files=`expr $nb_files + 1`;
        fi
done <<-FIN
  `cat $monFichier`
FIN
echo $nb_files;

En gros j'initialise une variable à 0 puis je teste si des fichiers existent; A chaque fois qu'il trouve qu'un fichier existe, il y a incrémentation de la variable $nb_files de 1. Or après la boucle while, quand je fais un echo $nb_files, cela me retourne : 0...

Je ne comprends pas pourquoi... Pourtant j'initialise ma variable, puis je l'incrémente normalement. Qu'est-ce qui ne va pas dans mon script ?

Bahan

3 réponses

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Salut Bahan,

Peut-etre tout simplement que:
nb_files=`expr $nb_files + 1`;
N'est jamais évalué (tests non satisfaits) :)
0
B@|-|@N Messages postés 386 Statut Membre 62
 
Arf j'ai oublié de le dire mais en effet, j'ai décommenté le set -x pour avoir de plus amples iunfos sur le déroulement de mon script et voilà ce que je vois :
+ read _file
+ [ -s /tmp/topologie/topo_mms.txt ]
+ expr 14 + 1
nb_files=15
+ read _file
+ [ -s /tmp/topologie/topo_msi.txt ]
+ expr 15 + 1
nb_files=16
+ read _file
+ [ -s /tmp/topologie/topo_pcu_mms.txt ]
+ expr 16 + 1
nb_files=17
+ read _file
+ [ -s /tmp/topologie/topo_gbl.txt ]
+ expr 17 + 1
nb_files=18
+ read _file
+ [ -s /tmp/topologie/topo_dproc.txt ]
+ expr 18 + 1
nb_files=19
+ read _file
+ [ -s /tmp/topologie/topo_gb.txt ]
+ expr 19 + 1
nb_files=20
Bahan

Close the world.||.txen eht nepO
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Re,

Bonche, le bout de script que j'ai fait ça fonctionne impeccable, mais j'ai l'impression que dans ce que tu nous a donné, il manque un bout de code non ? :)
0