Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/02/2010, à 15:12

percherie

[bash] Sortir une variable d'une boucle While

Bonjour,

Je cherche à utiliser une variable crée dans une boucle while dans le processus père ou comme variable globale, j'ai parcouru beaucoup de pages mais je n'arrive pas à comprendre ce que je doit appliquer à mon script.

Voci une portion simplifié de ce que je cherche à faire

while IFS=',' read paquet depot cle option
 do
   # création de la liste des paquets à télécharger
   download="$download $paquet"

echo $download  #affiche ce que je recherche

 done < <(grep ^[=] $1) | sort -u # on trit le fichier en unique et l'injecte en entrée

echo $download  #AFFICHE AUCUNE REPONSE!!!!

Sinon je pensait exporter la réponse dans un fichier mais c'est moins propre et ne sais de toute façon pas comment faire


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#2 Le 01/02/2010, à 15:20

Totor

Re : [bash] Sortir une variable d'une boucle While

le problème vient du | sort -u (plus particulièrement le pipe)
cela engendre 2 processus. Donc download reste local au processus où il est utilisé.


-- Lucid Lynx --

Hors ligne

#3 Le 01/02/2010, à 15:36

percherie

Re : [bash] Sortir une variable d'une boucle While

Vi je suis en train de me renseigner dessus, j'ai fait un essais sans le sort -u mais comme j'utilise toujours un pipe le problème est toujours là.

Tu aurai pas une solution qui permet de sortir la variable "locale" d'un pipe?


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#4 Le 01/02/2010, à 15:47

percherie

Re : [bash] Sortir une variable d'une boucle While

Voici ce que j'ai trouvé et qui fonctionne très bien

grep ^[=] proglist.txt > fifo
while IFS=',' read paquet depot cle option
 do

   # création de la liste des paquets à télécharger
   download="$download $paquet"

 done < fifo

echo $download #MON RESULTA EST ENFIN LA

rm fifo

Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#5 Le 01/02/2010, à 15:55

credenhill

Re : [bash] Sortir une variable d'une boucle While

hello
ou en utilisant des ()

grep ^[=] proglist.txt ¦ ( while IFS=',' read paquet depot cle option
 do
   # création de la liste des paquets à télécharger
   download="$download $paquet"
 done 
echo $download
)

Hors ligne

#6 Le 01/02/2010, à 16:01

percherie

Re : [bash] Sortir une variable d'une boucle While

La solution avec parenthèse fonctionne mais je ne peut pas utiliser la variable en dehors du pipe avec par exemple

grep ^[=] proglist.txt ¦ ( while IFS=',' read paquet depot cle option
 do
   # création de la liste des paquets à télécharger
   download="$download $paquet"
 done 
)
echo $download #VALEUR EN DEHORS DU PIPE

Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#7 Le 01/02/2010, à 16:07

credenhill

Re : [bash] Sortir une variable d'une boucle While

et non, sinon les () ne servent à rien, mais tu peux mettre la suite de ton code:

echo $download
# suite du code
)

Hors ligne

#8 Le 01/02/2010, à 16:51

Totor

Re : [bash] Sortir une variable d'une boucle While

download=( ) 
while IFS=',' read paquet depot cle option
 do
   download+=( "${paquet}" )
done < <(grep ^[=] "$1"|sort -u)
echo "${download[@]}"

Dernière modification par Totor (Le 01/02/2010, à 16:58)


-- Lucid Lynx --

Hors ligne

#9 Le 01/02/2010, à 18:24

percherie

Re : [bash] Sortir une variable d'une boucle While

Yes, ça fonctionne très bien le echo "${download[@]}", comment ça ce fait?

J'ai supprimé download=( ) et ça fonctionne toujours, je ne vois pas très bien à quoi ça peut servir.

Si c'est possible d'avoir quelques indices de recherche pour que j'apprenne un peut plus dessus je ne suis pas contre


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#10 Le 01/02/2010, à 21:42

Totor

Re : [bash] Sortir une variable d'une boucle While

percherie a écrit :

Yes, ça fonctionne très bien le echo "${download[@]}", comment ça ce fait?

J'ai intégré le "sort" avec le grep. Il n'y a donc plus 2 processus

percherie a écrit :

J'ai supprimé download=( ) et ça fonctionne toujours, je ne vois pas très bien à quoi ça peut servir.

C'est pour vider le tableau (mesure de précaution)

Dernière modification par Totor (Le 01/02/2010, à 21:42)


-- Lucid Lynx --

Hors ligne

#11 Le 01/02/2010, à 23:26

percherie

Re : [bash] Sortir une variable d'une boucle While

Merci en tout cas tongue


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne