6
我想獲取一個進程的標準輸出並使用三種不同的程序進行分析。我已經能夠使用命名管道,但是我可以使用fd代替。如何使用fd而不是命名管道
這裏是到目前爲止是什麼在起作用:
exec 3< <(myprog)
tee p1 p2 >/dev/null <&3
cat p1|ap1 &
cat p2|ap2 &
P1和P2用mkfifo創建。 ap1和ap2是分析程序。我不知道我是否說得對,但有沒有辦法將tee
分成兩個新的fd?事情是這樣的:
exec 3< <(myprog)
tee >&4 >&5 <&3
cat <&4|ap1 &
cat <&5|ap2 &
啊。這可能有效。有沒有辦法開球到FD的? ap1和ap2是具有管道和大量開關的巨大命令。如果我可以使用fd,它會更容易閱讀。 – User1 2010-08-26 18:44:27
@ User1:它絕對有可能(並且在不支持'<()' and '>()'的shell中工作的優勢),但語法很尷尬。這裏將'ap1'和'ap2'定義爲函數會更簡單。 – Gilles 2010-08-26 19:43:25
其他語法是什麼?我只注意到,我在腳本的某些部分使用if語句來修改如何根據輸入參數調用ap1。 '>()'在我的情況下可能不會奏效。但我不知道我還能怎麼稱呼它。有任何想法嗎?感謝您一直以來的幫助。 – User1 2010-08-26 19:51:42