Am Son, 2002-08-04 um 18.11 schrieb Sascha Andres:
Hi,
ich habe mir ein kleines Skript angefungen:
,----[ test.sh ]- | #! /bin/sh | | ps aux > .tmp | running="FALSE" | cat .tmp | grep "java" | while read line | do | running="TRUE" | echo $running | done | echo $running | rm .tmp `----
Die Ausgabe lautet dann z.B.:
,----[ out ]- | TRUE | FALSE `----
Das TRUE kommt aus der Schleife, das FALSE danach. Ich wollte noch ein if [[ $running = "TRUE" ]] ; then ... dranhängen, aber das kommt ja nie durch!?
Ich bin's immer gewöhnt, das die Sichtbarkeit einer globalen Variable (ich nenn $running jetzt mal so), auch immer so ist, aber running in der Schleife ist scheinbar ein anderes running als ausserhalb. Wie komm ich an den Wert ran?
Folgende Syntax funktioniert (getestet) running="FALSE" OLD_IFS="$IFS" IFS=" " for zeile in $(ps aux|grep java|grep -v grep) do running="TRUE" echo $running done IFS="$OLD_IFS" echo $running Warum das running in der while-loop nur lokal ist, weis ich leider auch nicht -- Matthias Hentges [www.hentges.net] "Thats what sucks about windows, you can't say that you rooted some one. Saying "I ADMINISTRATORED YOU!" just doesnt sound cool."