Hi,
das read builtin soll, wenn ich es richtig verstehe, eine Zeile von der Standardeingabe lesen, diese nach $IFS auseinandernehmen und dann in die als Argumente übergebenen Variablen speichern. Warum funktioniert das scheinbar nur in Subshells?
Illustration:
<code> echo "1" | read x ; echo $x echo "2" | ( read x; echo $x; ) echo "3" | { read x; echo $x; } echo "4" | { read x; } ; echo $x </code>
Nur 2 und 3 funktionieren bei mir wie erwartet. Der Unterschied zwischen 3 und 4 ist mir vollkommen schleierhaft. Der Unterschied zwischen (...) und {...} ist doch gerade, dass bei (...) gilt "Variable assignments and builtin commands that affect the shell's environment do not remain in effect after the command completes". Müsste das dann nicht bei {...} genau anders sein? Bitte klärt mich irgend jemand auf?
Viele Grüße Frank Benkstein.