Hi, On Fri, Mar 17, 2000 at 13:15 +0100, Kyek, Andreas, MDV-TBAx wrote:
Innerhalb der Schleife wird die Zählvariable in beiden Fällen sauber hochgezählt. Es scheint, das ein Konstrukt in der Art wie in der ersten Schleife alle (!) dort gesetzten Variablen wieder verloren hat, wenn die Schleife beendet ist. So wird die erste Schleife z.B. immer den Wert für i ausgeben, der vor der Schleife bestand. [...] #set -xv i=0 cat /etc/passwd|while read line do newline=$line (( i += 1 )) #echo $i, $newline done echo "Ergebnis 1: i=$i, newline=$newline"
Du liest den Inhalt von passwd mit einer Pipeline ein. Jedes Kommando in der Pipeline wird in einer eigenen Subshell ausgeführt, d.h. in diesem Fall auch die gesamte while - do - done Konstruktion. Alle Variablen die Du in der Subshell setzt oder veränderst, gehen beim Verlassen dieser natürlich verloren. Laut der Bash-Dokumentation ist das ein Feature: Each command in a pipeline is executed as a separate process (i.e., in a subshell). Ciao, Stefan --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com