我想将脚本的输出重定向到另一个程序。我通常会使用这两种形式做的事情:
python test.py 2>&1 | pyrg
python test.py |& pyrg
我的问题是它在makefile中不起作用:
[Makefile]
test:
python test.py 2>&1 | pyrg [doesn't work]
我希望避免编写可以完成工作的脚本文件。
修改
这似乎是pyrg
问题:
python test.py 2>&1 | tee test.out // Writes to the file both stderr and stdout
cat test.out | pyrg // Works fine!
python test.py 2>&1 | pyrg // pyrg behaves as if it got no input
这对我来说是一个糟糕的解决方案,因为在测试失败的情况下我都没有进入cat
部分(一切都在Makefile规则中)
答案 0 :(得分:8)
我偶然发现了同样的问题并对答案不满意。我有一个二进制TLBN
在测试用例example2.TLBN
上失败了。
这是我的make文件首先查看的内容。
make:
./TLBN example2.TLBN > ex2_output.txt
我遇到的错误消息失败并停止了制作过程。
这是我的修复:
make:
-./TLBN example2.TLBN > ex2_output.txt 2>&1
注意行开头的-
告诉make忽略对stderr的任何输出。
希望这有助于有类似问题的人。
答案 1 :(得分:0)
奇怪的是,我遇到了同样的问题,并像这样解决了它:
check-errors:
check-for-errors.sh &> errors.txt
我不太确定为什么2>&1 >errors.txt
在这里不起作用,但是&>
了