在makefile中'tee',我们也可以复制stderr吗?

时间:2013-05-09 14:50:45

标签: shell makefile tee

我希望记录stderr&的结果。 stdout到不同的文件,同时观察终端的两个输出。

所以我使用tee,并在this page中找到了解决方案。

但令人遗憾的是,当放入makefile时它无法工作:

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

似乎make将使用sh -c来执行此行,但这对语法不太了解。

我们可以为此提供另一种解决方案吗?

2 个答案:

答案 0 :(得分:2)

要在Makefile中使用此语法,您需要通过设置SHELL变量来更改用于运行命令的shell。

通过调用make使用:make SHELL=/bin/bash,或将SHELL:=/bin/bash放在Makefile的开头,它应该完成此任务。

答案 1 :(得分:0)

一种蛮力的方式是不在makefile中发球,而是尾随-f背景中的一个文件:

$ tail -f stderr.log & tail -f stdout.log
[... ^C]
$ kill $!