2013-05-09 29 views
0

我希望將stderr & stdout的結果記錄到不同的文件中,同時觀察終端的兩個輸出。makefile中的'tee',我們可以複製stderr嗎?

所以我用tee,並找到了解決方案this page

但可悲的是,放入生成文件時,它無法工作:

all: 
    @command > >(tee stdout.log) 2> >(tee stderr.log >&2) 

看來make將使用sh -c執行這條線,它不有關語法很好地理解。

我們可以有其他解決方案嗎?

+0

'tee'作品;這是'make'使用的shell不理解的進程替換。 – chepner 2013-05-09 15:02:09

+1

一個解決方法是使用'make SHELL =/bin/bash'或者在shell的'Makefile'的開頭放置'SHELL:=/bin/bash',將變量'SHELL'設置爲'/ bin/bash' 。 – Petesh 2013-05-09 15:08:55

+0

感謝@Petesh,你可以發佈答案,以便我可以將此標記爲已解決? – sleepsort 2013-05-09 15:11:28

回答

1

爲了用這個語法你Makefile你需要改變通過設置SHELL變量生成的shell用於運行命令。

通過調用make使用:make SHELL=/bin/bash或將SHELL:=/bin/bash置於Makefile的開頭,它應該完成此操作。

0

蠻力方法是不會在makefile發球而是尾-f在後臺的一個文件:

$ tail -f stderr.log & tail -f stdout.log 
[... ^C] 
$ kill $! 
相關問題