2011-07-20 17 views
1

我有一些代碼從某個人已經去過另一個部門。它聲稱將所有內容都記錄到$ MBL位置,但是它不會;它會在$ MBL位置的空文件:-(神祕的Bash命令...看來是記錄整個腳本的執行

exec > >(tee ${MBL}) 2>&1

我可以告訴大家,它需要標準錯誤,並將其發送到stdout,我可以告訴大家,三通應該將結果輸出到標準輸出和$ MBL 。不過,我不明白exec > >()語法

讀的bash(1)手冊頁顯示,發生派生....

回答

2

兩件事情會在這裏:exec只重定向重定向shell的自己的文件描述符以及中的>(command)語法和zsh將創建一個管道並將/dev/fd/*引用替換爲其輸入。

書面,這看起來像它做什麼,它聲稱是做..但可能有其他重定向腳本,或者如果它在不支持>(command)那麼它會吐出的殼中運行錯誤並沒有用處。

+0

好的。看起來問題是,在我使用的特定環境中,/ dev/fd/* n *未創建(...請勿問)。接受你的答案,因爲它解釋了正在發生的事情。 –

+0

如果是Linux,那麼應該有一個符號鏈接'/ dev/fd /' - >'/ proc/self/fd /'。其他環境會有所不同,我想還有系統不支持這個概念。 – geekosaur

+0

是的,在這個Linux安裝程序中,proc是空的。它很漂亮。 =) –