我希望记录stderr&的结果。 stdout到不同的文件,同时观察终端的两个输出。
所以我使用tee
,并在this page中找到了解决方案。
但令人遗憾的是,当放入makefile时它无法工作:
all:
@command > >(tee stdout.log) 2> >(tee stderr.log >&2)
似乎make
将使用sh -c
来执行此行,但这对语法不太了解。
我们可以为此提供另一种解决方案吗?
答案 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 $!