Mailinglist Archive: opensuse-de (2226 mails)

< Previous Next >
Re: Shellscript-Problem: /bin/sh Funktion while return [Nachtrag]
  • From: "K. Elo" <maillists@xxxxxx>
  • Date: Fri, 09 Jun 2006 09:29:08 +0300
  • Message-id: <1149834549.6874.28.camel@xxxxxxxxxxxxxxxxxxx>
Hallo nochmals,

2006-06-07 17:47 +0300, K. Elo:
> Also mit return wird nur die Schleife (while) beendet und man landet auf
> die Zeile nach 'done'. Die Erklärung dafür scheint zu sein, dass - AFAIK
> - pipes als "child processes" ausgeführt werden, so dass die
> while-Schleife als child-Prozess ausgeführt und entsprechend mit dem
> ersten 'return' beendet wird.

Ich habe eine Expertin gefragt und sie bestätigte diese Annahme: die
pipe führt dazu, dass die Schleife in einem Subshell ausgeführt wird, so
dass mit 'return 1' nur aus dem Subshell rausgesprungen wird. Du merkst
es auch so, wenn Du am Anfang der Funktion eine Integer-Variable
deklariest (z.B. RET_VAL=0) und diese Variable vor 'return 1' auf 1
setzt. Wenn Du jetzt 'echo "$RET_VAL"' zwischen 'done' und 'return 0'
einfügst, kommt _immer_ 0 aus. Wie Du sicherlich weißt, können Subshells
nur ihre eigenen Variablen ändern, nicht aber die des Shells, das das
Subshell gestartet hat.

Gruß
Kimmo



--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-unsubscribe@xxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-help@xxxxxxxx

< Previous Next >