Quiero capturar la salida de dos programas simultáneos (colas en archivos de registro) en una secuencia de salida en bash.Combinar la salida de dos programas simultáneos con bash
He utilizado este programa de ejemplo para la prueba:
function foo { for i in $(seq 1 10); do echo "program $*"; sleep 1; done }
Ahora las siguientes obras excelentes
(foo bar & foo baz &) | tee /tmp/output
pero una vez que agrego una tubería adicional en la mezcla ya no funciona:
(foo bar | grep bar & foo baz &) | tee /tmp/output # does't work
La salida se vuelve secuencial. Podría hacer un programa separado que incluya el grep pero me gustaría saber si hay una forma de evitarlo.
Si alguien puede explicar por qué no funciona, estaría muy feliz.
"a pesar de que es, debido a la camiseta". grep está * no * escribiendo a un tty. grep está escribiendo en un tubo, y el tee está escribiendo en un tty. –
Tienes toda la razón. Pobre redacción de mi parte: voy a editar mi publicación para aclararla. – FatalError