Dregis STB C sagte:
[Was habe ich denn nun schon wieder angestellt?] > http://www.mail-archive.com/[email protected]/msg05629.html > > Nun erkl�r mir doch mal, was das Ding genau macht. Ich habe es n�mlich > gerade f�r einen Anwendungsfall adaptiert, wo ich nicht mit > awk-Prozessen um mich schmei�en will, aber ich schnalle einfach nicht, > was da um die Zeile "set -- $zeile" herum passiert. Zwei Tricks zusammen: a) "set --": -- Prevents any flags from being changed. This option is useful in setting the $1 parameter to a value beginning with a - (minus sign). If no arguments follow this flag, the positional parameters are not set. D.h. ich ver�ndere keine Shell-Options (wie "noclobber"), sondern setze die Positionsparameter $1, $2, $3 auf das, was in der Variablen $zeile steht. W�re also zeile="a b c", dann ist nach "set -- $zeile" $1=a, $2=b und $3=c. Wie man sieht, es wird an den Leerzeichen getrennt. b) Das mit den Leerzeichen ist ja prompt gelogen, denn eigentlich ist das Trennzeichen in $IFS definiert. In dem Skript tue ich denn nun auch "IFS=':'", das ist ja der Feld-Trenner in der /etc/passwd. Damit f�llt das erste Feld (Benutzername) in $1, das zweite in $2 und so fort. Das ist nat�rlich alles viel zu umst�ndlich, IFS=":" while read user uid gid gecos home_ shell ; do ... done < /etc/passwd w�rde es auch tun. Mit Ausnahme der folgenden Zeile: > echo "Length: ${#zeile}" Das war der Grund f�r "set --". Alle Klarheiten beseitigt? Jochen -- This space is intentionally left blank. ---------------------------------------------------------------------------- PUG - Penguin User Group Wiesbaden - http://www.pug.org

