shell: variable in while nicht global!?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Lizenz eigener Beiträge: Artistic Lizenz

shell: variable in while nicht global!?

Beitrag von chabayo » 01.03.2009 12:01:10

Hallo,...

...moechte mir cygwin Mirrorn, und hab das Problem, mir will die Variable aus einer while Schleife ausserhalb keine Gueltigkeit haben:

Code: Alles auswählen

best_ping=999
wget --quiet http://www.cygwin.com/mirrors.lst -O - | \
        grep \.de | \
        while read one
                do
                host=`echo $one | cut -d\/ -f3`
                echo -n Ping $host ...
                ping=`
                ping -c1 $host | \
                grep time= |\ 
                cut -d= -f4 |\
                cut -d\  -f1 |\
                cut -d\. -f1`
                echo $ping ms.
                [ $ping -lt $best_ping ] && best_ping=$ping && url=`echo $one | cut -d\; -f1`
                done

echo Best Ping was $best_ping -\> using $url .
Fuer ne Korrektur waer ich dankbar.

g chab
Watt about the non-digital!?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: shell: variable in while nicht global!?

Beitrag von gms » 01.03.2009 12:39:21

das liegt nicht an der while-Schleife sondern an der "Pipleline":
man bash hat geschrieben: Each command in a pipeline is executed as a separate process (i.e., in
a subshell).
daher wird auch die while-Schleife in einem Unterprozeß gestartet

versuchs mal so:

Code: Alles auswählen

best_ping=999
while read one; do
...
done <<EOF
$(wget --quiet http://www.cygwin.com/mirrors.lst -O - | grep \.de )
EOF
echo Best Ping was $best_ping -\> using $url .
( edit: habe noch eine Copy&Paste-Fehler ausgebessert )

Gruß
gms

Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Lizenz eigener Beiträge: Artistic Lizenz

Re: shell: variable in while nicht global!?

Beitrag von chabayo » 01.03.2009 13:13:12

...seeehr huebsch.

Danke gms !
Watt about the non-digital!?

Antworten