Portée d'une variable [BASH] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 10-06-2004 à 23:48:30
edit: j'avais dit des conneries fausses en shell script, sorry ![]()
Marsh Posté le 10-06-2004 à 23:56:47
c pas vraiment ca, dommage (j'y avais pensé) 
mais en bash, les affectations de variables sont globales. 
Pour t'en convaincre essaye ca. 
Code :
  | 
 
 
Mais ce que je comprend pas c pourquoi dans ce cas ca marche, alors que avec un pipe ca ne marche pas  
 
 
Merci quand même 
 
Une autre idée?
Marsh Posté le 11-06-2004 à 00:14:23
bon, effectivement, j'm'a gourré.... la fatigue tout çaaaa 
 
 
sinon, je vois pas mais l'appel echo "i" | vers une fonction, c'est bizarre... 
tu peu pas faire in=`echo "i"` && toto($in) avec un parametre a ta fonction plutot ?
Marsh Posté le 11-06-2004 à 00:17:05
Ca arrive 
 
le echo c'était juste pour donner quelque chose au pipe 
 
la fonction toto a besoin de lire dans l'entrée standard 
 
en vrai ce n'est pas un echo "i", mais une succession de pipe ![]()
Marsh Posté le 11-06-2004 à 00:22:35
bah oui mais envoyer un pipe dans une fonction, j'avoue que ca me chiffonne un peu... 
 
c'est pour ca que je te propose de recuperer la sortie de ta serie de | avec les guillemets ` ` et de passer cette valeur à ta fonction a la place de lire stdin
Marsh Posté le 11-06-2004 à 00:30:16
ca marche très bien les pipe dans les fonctions 
 
l'autre méthode je connais, mais en fait j'ai besoin de récupérer des lignes, et l'autre méthode ne conserve pas les lignes 
 
 
Code :
  | 
 
On voit bien ici que l'on a tout sur une ligne, ce qui ne me conviens pas 
 c'est pour ca que j'utilise un pipe
Marsh Posté le 11-06-2004 à 08:34:16
| philou_a7 a écrit : nan... marche pas non plus   | 
 
J'ai pas compris de quoi tu parles, C'est un copier coller de ma console, donc sa affiche bien ce qui est écrit, mais c'est pas ce que je veux. 
 
La vrai fonction toto contient une boucle while read ligne; do; qqchose; done. 
C'est pour ca que j'ai besoin du pipe
Marsh Posté le 11-06-2004 à 08:46:42
Euh non, y a eu un autre message entre le tien et le mien mais il a ete effacé 
 
 
du coup le mien veux plus rien dire ![]()
Marsh Posté le 11-06-2004 à 09:00:52
j'avais peut etre pas totalement dit une connerie au debut... 
   | 
 
 
essaie ca et regarde bien les resultats 
 
je me demande si "local" n'est pas implicite dans une fonction ![]()
Marsh Posté le 11-06-2004 à 09:09:03
Je viens d'avoir l'explication sur le forum gentoo 
| Citation : chaque portion d'un pipe est executée dans un sous-shell, et donc les affectations de variable qui s'y trouvent n'ont aucun effet sur le programme principal.  | 
 
 
http://forums.gentoo.org/viewtopic [...] 23#1230723 
 
Ce que je veux faire n'est apparement pas possible, je vais essayer de repenser mon script autrement. Merci pour ton aide
Marsh Posté le 11-06-2004 à 09:23:39
ah bah d'accord 
 
et si tu utilises export pour la declaration, ca traverse pas les sous-shells ?
Marsh Posté le 11-06-2004 à 10:24:11
faudra que j'apprenne un jour... mais un jour qui n'est pas aujourd'hui ![]()
Marsh Posté le 10-06-2004 à 22:44:14
Bonjour
J'ai un problème avec la gestion des variables en bash.
Je ne comprend pas pourquoi dans l'exemple ci-dessous, il n'y
a qu'une ligne vide qui s'affiche
Si quelqu'un pouvait m'éclairer?