문제

I hope to record the result of stderr & stdout to different files, while watching both outputs from the terminal.

So I use tee, and found a solution in this page.

But the sad thing is, it can't work when put into a makefile:

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

It seems that make will use sh -c to execute this line, which doesn't understand well about the syntax.

Can we have another solution for this?

도움이 되었습니까?

해결책

In order to use this syntax in your Makefile you need to change the shell that make uses for running commands by setting the SHELL variable.

By invoking make using: make SHELL=/bin/bash, or putting SHELL:=/bin/bash at the start of the Makefile it should accomplish this.

다른 팁

A brute-force way would be to not tee in the makefile but instead tail -f one of the files in the background:

$ tail -f stderr.log & tail -f stdout.log
[... ^C]
$ kill $!
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top