[bash] question sur la portée des variables

question sur la portée des variables [bash] - Programmation

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 ?

Reply

Marsh Posté le 18-03-2002 à 22:28:58   

Reply

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)

Reply

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

Reply

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 ?

Reply

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 :cry:

Reply

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 ???!!

Reply

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)

Reply

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

Reply

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à

Reply

Marsh Posté le 20-03-2002 à 14:45:05    

au fait merci pour les réponses :)

Reply

Marsh Posté le 20-03-2002 à 14:45:05   

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed