POSIX und Redirection von Prozessen

23/11/2007 - 17:46 von Martin Vaeth | Report spam
Hallo,

beim Versuch, ein altes Bash-Skripte POSIX-kompatibel zu machen,
bin ich auf ein unerwartetes Problem gestossen:

Bislang dachte ich, dass der klassische Fall, zeilenweise Ausgaben
aus Kommandos zu lesen, so funktioniert:
while read var; do something; done <(Kommando)
Dies hat gegenüber dem "Pipen"
Kommando | while read var; do something; done
den Vorteil, dass es nicht in einer Subshell passiert, so
dass man in "something" auch Variablen setzen kann, die man
danach benutzen kann. Noch wichtiger wird der <(...) Operator
das bei so Sachen wie
comm <(sort file1) <(sort file2)

Jetzt habe ich aber festgestellt, dass <(...) nicht POSIX-kompatibel
zu sein scheint (zumindest kann dash das nicht).
Gibt es eine POSIX-Übersetzung der obigen Kommandos oder muss man
das dann tatsàchlich vollkommen "hàndisch" machen, also unbelegte
fifo-Namen suchen und kreieren (mit all den Race-Condition-Problemen,
weil mktemp ja nur files/directories kann) und dann beschreiben?

Martin
 

Lesen sie die antworten

#1 Heike C. Zimmerer
23/11/2007 - 17:58 | Warnen spam
Martin Vaeth writes:

while read var; do something; done <(Kommando)
[...]
Jetzt habe ich aber festgestellt, dass <(...) nicht POSIX-kompatibel
zu sein scheint (zumindest kann dash das nicht).



x=$(command)
while read var; do
..
done <<EOF
$x
EOF

Ähnliche fragen