Mailinglist Archive: opensuse-de (6551 mails)
| < Previous | Next > |
Re: bash Probleme
- From: Axel Heinrici <axel.foley-beverly-hills@xxxxxx>
- Date: Mon, 5 Aug 2002 00:06:11 +0200
- Message-id: <200208050006.11688.axel.foley-beverly-hills@xxxxxx>
Hi
Am Sonntag, 4. August 2002 23:39 schrieb Matthias Hentges:
Ich habe gerade mal zu testen folgendes eingegeben (mp3 ist relativ groß
und der tar alleine dauert schon minuten):
tar -c mp3 |bzip2 >test.test
In ner anderen shell sehe ich dann im top oder mit ps tar und bzip2
gleichzeitig laufen.
Auf die Gefahr hin, dass ich mich für doof haltet:
In dem Skript steht:
"cat .tmp | grep "java" | while read line"
Ich verstehe das so, dass grep und die while-Schleife jeweils in einer
Subshell laufen.
***verwirrt sei****
Wie auch immer. Für mich sieht das immernoch so aus als ob es an den "|"
liegt und nichts an den Eigenschaften der while-loop.
Vielleicht raff' ich es morgen. Es ist ja auch schon spät :-)
mfg
Axel
Am Sonntag, 4. August 2002 23:39 schrieb Matthias Hentges:
Am Son, 2002-08-04 um 22.47 schrieb Axel Heinrici:Hmm
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).
Ich habe gerade mal zu testen folgendes eingegeben (mp3 ist relativ groß
und der tar alleine dauert schon minuten):
tar -c mp3 |bzip2 >test.test
In ner anderen shell sehe ich dann im top oder mit ps tar und bzip2
gleichzeitig laufen.
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.
Auf die Gefahr hin, dass ich mich für doof haltet:
In dem Skript steht:
"cat .tmp | grep "java" | while read line"
Ich verstehe das so, dass grep und die while-Schleife jeweils in einer
Subshell laufen.
***verwirrt sei****
Ich persönlich nehme fast immer for-loops. Da treten solche Probleme
nicht auf.
Wie auch immer. Für mich sieht das immernoch so aus als ob es an den "|"
liegt und nichts an den Eigenschaften der while-loop.
Vielleicht raff' ich es morgen. Es ist ja auch schon spät :-)
mfg
Axel
| < Previous | Next > |