#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
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
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
Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/
Hors ligne