2016-02-29 34 views
1

除了STDOUT,我想將程序的輸出傳送到另一個程序。我現在正在做的方式是將tee輸出到一個臨時文件,然後我將刪除它,但有興趣瞭解更好的方法,我不必創建臨時文件。這裏是我的代碼,顯示什麼,我現在在做什麼:除STDOUT之外,還有什麼方法可以將程序的輸出發送到另一個程序嗎?

random=`echo $RANDOM` 
filename='/tmp/'$random 
foo | tee $filename 
cat $filename | bar 
rm $filename 

在上面foobar是我的計劃。我想要的是輸出foobar,但也有foo顯示其輸出到STDOUT。如果我只是這樣做:

foo | bar 

輸出到標準輸出丟失。

+1

有沒有寫入進程的控制檯而不是臨時文件?例如'foo | tee/dev/tty | bar'? –

回答

4

您可以使用process substitution

foo | tee >(bar) 

>(…)語法是採取寫到「這個字節文件「並將它們提供給內部進程

+0

太棒了!奇蹟般有效 – morpheus

0

富可包含:

Message = $message ./bar.sh 

欄可包含:

echo I received the \"$message"\ 
相關問題