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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Probleme perte de variable en sortie de boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme perte de variable en sortie de boucle

n°975214
doum
Mentalita nissarda
Posté le 08-02-2005 à 11:31:30  profilanswer
 

Bonjour, je suis entrain de faire un script bash pour remonter le statut des ports des switchs
 
A l'interieur j'ai une boucle qui incremente des variables. Lorsque la boucle est finie, les variables reviennent a 0.
 
En gros l'idée du script c'est ca:
 


A=0
B=0
while toto
do
  A=expr $A + 1
  if machin then
     B=expr $B + 1
  end if
  echo $A #on obtient bien l'incrementation a chaque boucle
  echo $B  
done
echo $A #on obtient 0
echo $B #on obtient 0


 
Une idée

mood
Publicité
Posté le 08-02-2005 à 11:31:30  profilanswer
 

n°975615
doum
Mentalita nissarda
Posté le 08-02-2005 à 16:50:43  profilanswer
 

up, le probleme a ete contourné en ecrivant les resultats dans un fichier, mais c'est sale et ca me plait pas, si quelqu'un a une idée plus propre qu'il n'hesite pas

n°975659
matafan
Posté le 08-02-2005 à 17:06:47  profilanswer
 

Je te conseille de poster le vrai script que tu fais tourner, parce que dans ce que tu as poste (independement de "toto" et "machin" ) y'a au moins 4 erreurs (manque les back quotes, "end if", manque un ; apres machin...).
 
Sinon, il n'y a aucune raison que ca ne marche pas. A mon avis tu joues avec les pipes et read. Mais forcement si tu poste pas ton code, on peut pas deviner.


Message édité par matafan le 08-02-2005 à 17:07:28
n°975914
doum
Mentalita nissarda
Posté le 08-02-2005 à 23:40:59  profilanswer
 

ok je pensais juste que ca venait d'un truc style, lorsqu'on lance la boucle il crée un fork, du coup les variables sont incrementés dans le process fils mais pas remonté dans le pere ou un truc du genre.
 
Demain j'essairai de poster le code, tout ce que je peux dire la c'est que la boucle est lancé comme ca:
 
cat $fichier | grep "switchs" | grep -v "^#" | while read host ip reste
do
.
.
.
done
 
Avec une incrementation dans la boucle selon les resultats (une trace prouve qu'elle se fait bien). host contient le nom de chaque switch, ip leur ip et reste contient des conneries dont on se sert pas.
 
J'aurai quand meme du mal a poster le code vu qu'il doit faire au moins 500 lignes...disons qu'il n'y a pas d'erreur de syntaxe a l'interieur, tout se passe bien, les variables sont bien incrémentés sans soucis, mais lorsque la boucle se terminent, elles retrouvent toutes leur valeurs d'origine soit 0

n°976008
matafan
Posté le 09-02-2005 à 02:39:50  profilanswer
 

Ben oui donc c'est exactement ce que tu dis : fork, process fils... Toussa. Mais dans le code que tu as poste plus haut ca ne se produit pas puisqu'il n'y a pas de pipe et donc pas de fork, et donc on ne risquait pas de pouvoir t'aider.
 
Bref ouvre une parenthèse avant le while et ferme la après que tu ais utilisé tes variables (A et B) pour la dernière fois. Par exemple :

#!/bin/sh
a=0
cat txt | ( while read line
do
        a=$((a+1))
done
echo $a )

n°976046
doum
Mentalita nissarda
Posté le 09-02-2005 à 09:03:28  profilanswer
 

Je teste ca, merci beaucoup


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

  Probleme perte de variable en sortie de boucle

 

Sujets relatifs
probleme de test sur une valeur sortie d'une requete SQLProbleme de Thread... :(
problème avec des sessions....[Java MySQL] Problème de Savepoints !
[JS] Problème de Scriptprobleme avec l'api c Mysql
Problème d'insertion de donnéesVBS définir / modifier une variable d'environnement
[MFC] Problème avec GetDocument() 
Plus de sujets relatifs à : Probleme perte de variable en sortie de boucle


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