2008-12-01 12 views
7

Also meine Frage ist, ob ich irgendwie Daten an mein Programm senden kann und dann die gleichen Daten UND ihr Ergebnis an ein anderes Programm senden, ohne eine temporäre Datei (in meinem Fall ouputdata.txt) erstellen zu müssen. Vorzugsweise mit Linux-Pipes/Bash.Wie kann ich an Rohre anhängen?

ich zur Zeit folgendes:

Katze inputdata.txt | ./MyProg> outputdata.txt

cat eingabedaten.txt ausgabedaten.txt | ./MyProg2

Antwort

11

Auswahl 1 - fix MyProg, um den zusammengeführten Ausgang vom Eingang und seinem eigenen Ausgang zu schreiben. Dann kannst du das tun.

./MyProg <inputdata.txt | ./MyProg2 

Wahl 2 - Wenn Sie nicht MyProg beheben können sowohl Ein- und Ausgabe zu schreiben, müssen Sie verschmelzen.

./MyProg <inputdata.txt | cat inputdata.txt - | ./MyProg2 
+0

Sorry, aber diese Lösung ist hässlich. Einfach MyProg fixieren und sie mit Pipes verketten. –

+1

a) das ist überhaupt nicht hässlich, b) die erste Wahl schlägt genau das vor. – hop

21

Hier ist eine andere Art und Weise, die die Ausgabe von zwei Programmen erweitert werden kann, zusammen zu stellen:

(Prog1; Prog2; Prog3; ... ) | ProgN 

Das zumindest in Bash funktioniert.

+0

lassen Sie uns es zusammen mischen, um eine gute Mahlzeit zu bekommen: (Prog1 & Prog2 & Prog3 & ...) | ProgN: p –

+0

LOL, ja, das wird interessante Ergebnisse geben :-D – derobert