Quiero redirigir la salida de un script a un programa diferente. Algo que haría normalmente utilizando estas dos formas:Redireccionando stdout y stderr dentro de una regla Makefile
python test.py 2>&1 | pyrg
python test.py |& pyrg
Mi problema es que no funciona desde el interior de un makefile:
[Makefile]
test:
python test.py 2>&1 | pyrg [doesn't work]
Deseo evitar escribir un archivo de script que hace el trabajo .
Editar:
Este parece ser un tema 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
Esta es una mala solución para mí, ya que nunca se llega a la parte cat
en caso de un fallo de la prueba (todo es dentro de una regla Makefile)
Esto debería funcionar. 'make' pasa toda la línea a'/bin/sh' para su interpretación, por lo que cualquier cosa que este shell (que no necesita ser su shell de usuario) pueda entender las obras. –
Exactamente ¿cómo no funciona? Intenta configurar 'exportar SHELL: =/bin/bash' en algún lugar de tu archivo MAKE. –
El segundo comando se ejecuta como si no hubiera recibido ninguna entrada de 'stdin'. Y realmente se ejecuta antes que el primero. El uso de '||' en lugar de '|' mantiene el orden pero una vez más 'pyrg' no recibe la entrada. – Xyand