oki ben essaye set -x au niveau de cette partie
tu comprendra peut etre pourquoi ca merde si ca merd eencore
ayachi
au fait merci pour les réponses :)
ayachi
c'est une partie d'un script qui sert à jeter des fichiers dans une corbeille, mais si le fichier y est déjà on doit alors mettre une version, par exemple saferm f1 puis saferm f1,
dans la corbeille y'aura f1=0 et f1=1. Cette partie sert à trouver la version à mettre au fichier voilà
asphro
je comprend pas ton script mais fou un set -x apres ton i=0 pour vois ce q il fais mais serieux je comprend po du tout ton script genre expr etc exprca marche que pour le numerique
gfive
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)
ayachi
y'a vraiment aucun spécialiste du shell unix dans le coin, c'est pas possible ???!!
ayachi
Tentacle a écrit a écrit :
c'est quand même bizarre ... as-tu vérifié que ton script passait bien à l'endroit où il change la valeur de i ?
ouais j'ai bien regardé ça y passe, il fait comme si c'était deux variables différentes.
pas de pro du bash dans le coin pour m'aider, please :cry:
Tentacle
ayachi a écrit a écrit :
je sais mais je veux une solution générale pour le cas où je ne peux pas faire autrement
c'est quand même bizarre ... as-tu vérifié que ton script passait bien à l'endroit où il change la valeur de i ?
ayachi
Tentacle a écrit a écrit :
méthode à la con, tu balances le ls dans un fichier et tu le lis ensuite :)
sinon il doit bien y avoir un moyen d'utiliser une variable système/globale (je sais plus comment ça s'appelle)
je sais mais je veux une solution générale pour le cas où je ne peux pas faire autrement
Tentacle
ayachi a écrit a écrit :
le problème est que si i à la fin du while vaut 2 et bien
après il reste à 0
j'ai cru comprendre que c'est une histoire de process fils dans lequel le 2ieme i défini ne touche pas au premier i.
comment on fait svp pour référencer le même i ?
méthode à la con, tu balances le ls dans un fichier et tu le lis ensuite :)
sinon il doit bien y avoir un moyen d'utiliser une variable système/globale (je sais plus comment ça s'appelle)
ayachi
voilà j'écris ça
i=0
ls qqch/* | while read rep
do
j=`expr etc`
if [ $i -lt $j ]
then i=`expr $j + 1`
fi
done
le problème est que si i à la fin du while vaut 2 et bien
après il reste à 0
j'ai cru comprendre que c'est une histoire de process fils dans lequel le 2ieme i défini ne touche pas au premier i.
comment on fait svp pour référencer le même i ?