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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  prob de variable (debutant)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

prob de variable (debutant)

n°917467
schmur
Posté le 07-12-2004 à 21:13:14  profilanswer
 

bonjour a tous,
voila j'ai un petit soucis.Voici le code :

Code :
  1. ligne="p"
  2. toto="m"
  3. cat sauv.txt | while read ligne
  4. do
  5. toto=$ligne
  6. echo $toto
  7. done
  8. echo $toto
  9. echo $toto


 
quand je fais les deux derniers echo il m'affiche deux fois m alosr que j'aimarai la derniere ligne du fichier.
pourquoi ca marche pas ???
 
merci d'avance
 
 

mood
Publicité
Posté le 07-12-2004 à 21:13:14  profilanswer
 

n°917665
matafan
Posté le 08-12-2004 à 02:12:32  profilanswer
 

Parce que ton shell fork deux autres shells pour les parties droites et gauches de ton pipe. Ton toto est bien assigné, mais... Dans le sous shell qui est lancé pour la partie droite du pipe, pas dans le shell père (celui qui exécute ton script). C'est l'exemple typique de mauvaise utilisation de read (remarque que ca marche quand même sous certains shells pour une raison que j'ignore).


Message édité par matafan le 08-12-2004 à 02:13:37
n°917921
Sve@r
Posté le 08-12-2004 à 13:52:02  profilanswer
 

matafan a écrit :

Parce que ton shell fork deux autres shells pour les parties droites et gauches de ton pipe. Ton toto est bien assigné, mais... Dans le sous shell qui est lancé pour la partie droite du pipe, pas dans le shell père (celui qui exécute ton script). C'est l'exemple typique de mauvaise utilisation de read (remarque que ca marche quand même sous certains shells pour une raison que j'ignore).


Ca marche en "korn shell" mais moi non plus, je sais pas pourquoi
 
En revanche, si tu veux pouvoir afficher la variable "toto" à la fin de la boucle, il faut grouper la boucle "while" et l'affichage "echo" dans un seul process en utilisant les parenthèses

Code :
  1. ligne="p"
  2. toto="m"
  3. cat sauv.txt | ( while read ligne
  4. do
  5. toto=$ligne
  6. echo $toto
  7. done
  8. echo $toto
  9. echo $toto
  10. )

n°918253
schmur
Posté le 08-12-2004 à 19:34:22  profilanswer
 

ok merci a tous les deux


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

  prob de variable (debutant)

 

Sujets relatifs
Test du contenu d'une variabledébutant en VBA (petit probléme)
Intégration de pages PHP sur un site - débutantpb actualisation d'une variable mysql
séparer dizaine et unité d'une variable entiereDebutant :Token et Vector
débutant c++ gtk cherche aide pour petit programme[JS] Texte de plusieurs ligne dans une variable js ?
variable de session en javascriptVariable de session en JSP
Plus de sujets relatifs à : prob de variable (debutant)


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