Ответ 1
Это не объясняет, почему простые подходы не работают, но это делает трюк:
[Makefile]
test:
python test.py >test.out 2>&1; pyrg <test.out
Я хочу передать вывод скрипта в другую программу. Что-то, что я обычно делал бы, используя эти две формы:
python test.py 2>&1 | pyrg
python test.py |& pyrg
Моя проблема в том, что он не работает изнутри make файла:
[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)
Это не объясняет, почему простые подходы не работают, но это делает трюк:
[Makefile]
test:
python test.py >test.out 2>&1; pyrg <test.out
Я наткнулся на этот вопрос с той же проблемой и не был удовлетворен ответом. У меня был двоичный TLBN
, который не прошел в тестовом случае example2.TLBN
.
Это первый файл моего файла.
make:
./TLBN example2.TLBN > ex2_output.txt
Что не удалось с сообщением об ошибке, которое я ожидал и остановил процесс make.
Это мое исправление:
make:
-./TLBN example2.TLBN > ex2_output.txt 2>&1
Обратите внимание на -
в начале строки, которая сообщает make игнорировать любой вывод в stderr.
Надеюсь, это поможет кому-то, у кого есть аналогичная проблема.