2008-12-01 42 views
7

所以我的問題是如果我可以以某種方式發送數據到我的程序,然後發送相同的數據和其結果到另一個程序,而不必創建一個臨時文件(在我的情況下ouputdata.txt)。 最好使用linux管道/ bash。如何追加到管道上?

我現在做到以下幾點:

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

cat inputdata.txt outputdata.txt | ./MyProg2

回答

11

選擇1 - 修復MyProg來寫入來自輸入的合併輸出和它自己的輸出。然後你可以做到這一點。

./MyProg <inputdata.txt | ./MyProg2 

選擇2 - 如果你不能修復MyProg寫輸入和輸出,你需要合併。

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

對不起,但這個解決方案是醜陋的。只需修復MyProg並用管道將它們鏈接在一起即可。 – 2008-12-01 16:22:50

+1

a)這根本不難看,b)第一種選擇恰恰是這樣。 – hop 2008-12-01 16:38:11

21

這裏是另一種方式,它可以擴展到把兩個程序的輸出在一起:

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

在猛砸至少工作。