question sur la portée des variables [bash] - Programmation
Marsh Posté le 18-03-2002 à 22:41:14
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)
Marsh Posté le 18-03-2002 à 23:06:56
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
Marsh Posté le 18-03-2002 à 23:27:35
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 ?
Marsh Posté le 19-03-2002 à 21:46:15
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
Marsh Posté le 20-03-2002 à 13:23:57
y'a vraiment aucun spécialiste du shell unix dans le coin, c'est pas possible ???!!
Marsh Posté le 20-03-2002 à 13:36:40
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)
Marsh Posté le 20-03-2002 à 13:36:59
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
Marsh Posté le 20-03-2002 à 14:44:42
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à
Marsh Posté le 20-03-2002 à 18:33:37
oki ben essaye set -x au niveau de cette partie
tu comprendra peut etre pourquoi ca merde si ca merd eencore
Marsh Posté le 18-03-2002 à 22:28:58
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 ?