![](https://seccdn.libravatar.org/avatar/90f32dbb3e40aa39ebaceb97e9e2ae5a.jpg?s=120&d=mm&r=g)
Hallo Liste, beruflich bedingt bin ich gerade dabei, einen Haufen Skripte für die KSH so umzuschreiben, daß sie auch mit der bash laufen. Damit wollen wir hier einen eventuellen Umstieg auf Unix durch eine den Windoof Usern im Handling vertrautere Shell erleichtern. Dabei ist mir folgendes aufgefallen: Das folgende Skript liefert als Ergebnis_1 immer 0 und eine leere Variable und als Ergebnis_2 immer die Anzahl der Zeilen und die letzte Zeile der passwd (getestet unter einer bash 2.00.0(1) auf Sun und HP Maschinen). Mit einer KSH sind (wie eigentlich erwartet) die Ergebnisse die gleichen. 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. Mein Problem ist nicht, daß ich das nicht umgehen kann, aber ich möchte es gerne verstehen. Liegt das nur an meiner bash Version hier in der Firma oder ist das ein bug/feature? mfg Andreas PS: Ich weiß, daß ich die Zeilen auch anders zählen kann; es geht hier nur ums Prinzip der Schleife. ------------------- cut here --------------------------- #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" i=0 while read line do newline=$line (( i += 1 )) #echo $i, $newline done