Am Dienstag, 24. Februar 2004 06:49 schrieb Falk Sauer:
Jan Trippler schrieb: [...]
Durch Pipes verbundene Prozesse werden in eigenen Subshells ausgeführt, ergo können die dort gesetzten Variablen dahinter im Script (weil zurück in der aufrufenden Shell) nicht ankommen.
hm wenn das so ist ist das logisch, gestern hab ich noch ein wenig geschmökert da bin ich just auf genau dieses konstrukt gestossen in einem nicht gerade preiswerten Buch. War das mal anders oder gibt es systeme wo das anders ist? Oder anders gefragt ist dieses Verhalten konfigurierbar?
AFAIK nein - ich kenne kein *nix, wo das anders ist.
Du kannst es so machen:
jan@roland:~/tmp> COUT="`cksum datei do.pl`" jan@roland:~/tmp> read a b c d e f <
`echo $COUT` EOF
heiss, mit dem here statement und Variablen hab ich in einem ähnlichen Fall auch ein paar seltsame Erfahrungen gesammelt
zb:
wenn ich sowas hier bau
laber sülz statement<
wird mir die Variable nicht expandiert, ist das normal?
Ja - guck Dir mal den Unterschied zwischen Deinem und meinem
Statement an - das here-Dokument übernimmt die Rolle von stdin - Du
musst also was ausgeben. Es geht in Deinem Fall übrigens noch
einfacher, Du brauchst den Zwischenschritt über die
Variablenzuweisung nicht:
jan@roland:~/tmp> read a b c d e f < `cksum datei do.pl | tr '\n' ' '`
EOF Der tr deshalb, weil \n als Ende der Eingabe gelten würde.
Jan