Am Son, 2002-08-04 um 22.47 schrieb Axel Heinrici:
Am Sonntag, 4. August 2002 19:35 schrieb Jan Trippler:
On Son, 04 Aug 2002 at 18:11 (+0200), Sascha Andres wrote:
ich habe mir ein kleines Skript angefungen:
,----[ test.sh ]-
| #! /bin/sh | | ps aux > .tmp | running="FALSE" | cat .tmp | grep "java" | while read line ...... Ich kann mir diesen Effekt im Moment nicht erklären (denn eine Subshell liegt offenbar nicht vor - $running ist innerhalb der Schleife bekannt).
Hi
Nur mal so interessehalber. Ich kann zwar noch nicht richtig skripten, aber dazu hab' ich jetzt doch ne Frage. Wieso keine Subshell? Habe gerade nochmal in "info bash" geschaut. Ich interpretiere das so, dass jeder Befehl in der Pipe in einer Subshell ausgeführt wird. Ich habe das bisher auch nie bezweifelt, denn die Befehle laufen ja eigentlich parallel. Was stimmt denn nun? Subshell oder nicht Subshell.
Die Befehle in der Pipe werden in Subschells ausgeführt, und zwar nacheinander (seriell). Hier ging es aber um die Variable "running" die ja nicht aus der Pipe kommt, sondern von der while-Schleife erzeugt wird. Die while-Schleife sollte eigentlich nicht in einer Subshell laufen, was sie aber anscheinend doch macht, da die Variable lokal auf die while-Schleife begrenzt ist - zumindest im angegebenen Beispiel. Ich persönlich nehme fast immer for-loops. Da treten solche Probleme nicht auf. -- 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."