A mon avis, le problème vient du pipe...Parce que ça ouvre un nouveau processus...
Essaie en faisant
"export i=0"
Et sinon, je ne saurait trop te conseiller de faire :
for rep in `/bin/ls qqch/*`
do
a la place de
ls qqch/* | while read rep
do
(le /bin/ls est là parce qu'avec les ls couleur, tu as parfois des caractères parasites dans la sortie de ls)