Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1464 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Passage de variable depuis une boucle ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage de variable depuis une boucle ???

n°949992
bug-jargal
Posté le 10-01-2005 à 13:55:51  profilanswer
 

Salut à tous et toutes et bonne année...
 
Je voudrais vous soumettre un petit pb que j'ai avec un script shell :
 

Code :
  1. if [ -e $FILE_EXT ]
  2. then
  3.     cat < $FILE_EXT | while true
  4.     do
  5.         read temp_line2
  6.         if [ -z "$temp_line2" ]; then break; fi
  7.   tablespace2=$temp_line2
  8.   echo tablespace fr= "$tablespace"
  9.   echo tablespace2= "$tablespace2"
  10.   if [ "$tablespace" = "$tablespace2" ]
  11.   then
  12.    already_exists="1"
  13.    echo already_exists 28= $already_exists
  14.    break
  15.   else
  16.    already_exists="0"
  17.    echo already_exists 32= $already_exists
  18.   fi
  19.   echo already_exists 34= $already_exists
  20.  done
  21.  echo already_exists 36= $already_exists
  22. fi
  23. echo already_exists 39= $already_exists
  24. return $already_exists


 
me renvoie :
 
tablespace fr= ALERT_IDX
tablespace2= ALERT
already_exists 32= 0
already_exists 34= 0
already_exists 36=
already_exists 39=
already_exists 61= 0
 
tablespace fr= ALERT_IDX
tablespace2= ALERT
already_exists 32= 0
already_exists 34= 0
tablespace fr= ALERT_IDX
tablespace2= ALERT_IDX
already_exists 28= 1
already_exists 36= 0
already_exists 39= 0
already_exists 61= 0
 
tablespace fr= ALERT_IDX
tablespace2= ALERT
already_exists 32= 0
already_exists 34= 0
tablespace fr= ALERT_IDX
tablespace2= ALERT_IDX
already_exists 28= 1
already_exists 36= 0
already_exists 39= 0
already_exists 61= 0
 
Ce qui veut dire que la variable already_exists ne passe pas correctement la sortie de la boucle dans laquelle elle est initiée...
 
Je ne comprends pas ce qui peut se passer...
Quelqu'un peut-il me renseigner SVP ?

mood
Publicité
Posté le 10-01-2005 à 13:55:51  profilanswer
 

n°950110
matafan
Posté le 10-01-2005 à 15:55:56  profilanswer
 

Piege classique de read avec les pipes... La partie gauche de ton pipe (la boucle while) est exécutée dans un sous-process (forcément, comment veux-tu qu'il fasse le cat et le read en même temps sinon). Donc already_exists est une variable d'environement dans ton sous process. Après ta boucle while, tu es à nouveau dans le process père. Evidemment already_exists n'a pas été modifié dans ce process : un process fils n'a pas accès à l'environnement de son père.
 
Un facon de contourner ce "problème" est de mettre toute la partie du script qui utilise already_exists entre parenthèses, de maninère à ce que toutte cette partie soit exécutée dans le même process fils. Ouvre la parenthèse avant le while, ferme la avant le return.

n°950116
bug-jargal
Posté le 10-01-2005 à 16:05:42  profilanswer
 

Bon sang mais c'est bien sur !!!   :pt1cable:  
 
Merci beaucoup pour ton aide...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Passage de variable depuis une boucle ???

 

Sujets relatifs
variable qui bugGraphique couplé avec variable $_POST
Impossible de mettre un identifiant de fichier dans une variable !Afficher la valeur d'une variable
[C++]passage linux -> windows[caml] Peut-on déclarer une variable polymorphe [...] ?
Variable publique, creation dynamique ?[Perl] Executer le contenu d'une variable
plusieurs commandes dans une boucle for[PHP]Récuperation d'une boucle en variable
Plus de sujets relatifs à : Passage de variable depuis une boucle ???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR