On Friday 19 August 2005 15:34, Dr. Jürgen Vollmer wrote:
das geht nicht, 1. die sh mäkelt die ( ) an 2. denn tee schreibt seine Ausgabe ja nach stdout.
ich sagte nicht sh sondern bash. sh kann das nicht: $ (echo 1;echo 2) | tee >(sed 's/\(.*\)/script1: \1/' >&2) | sed 's/\(.*\)/script2: \1/' script2: 1 script2: 2 script1: 1 script1: 2 Beide sed's sehen also den Output der beiden echo's. Die Umleitung des stdout auf stderr des ersten Scripts ist nötig, denn es erbt seinen stdout ja von der shell. Damit ist stdout des ersten Scripts der selbe wie der des tee Kommandos. Somit würde er nochmal durch das 2. Script gefiltert: $ (echo 1;echo 2) | tee >(sed 's/\(.*\)/"script1: \1"/') | sed 's/\(.*\)/script2: \1/' script2: 1 script2: 2 script2: "script1: 1" script2: "script1: 2" Die ersten 2 Zeilen wurden von tee auf stdout geschrieben, die letzten 2 Zeilen wurden von tee an Script1 übergeben, von diesem gefiltert und auf stdout geschrieben. Alle 4 Zeilen wurden danach von Script2 bearbeitet. Torsten