Quiero sacar el estándar de un proceso y analizarlo con tres programas diferentes. Pude usar pipes con nombre, pero puedo usar fd's en su lugar.Cómo utilizar tee en fd's en lugar de tuberías con nombre
Esto es lo que funciona hasta el momento:
exec 3< <(myprog)
tee p1 p2 >/dev/null <&3
cat p1|ap1 &
cat p2|ap2 &
p1 y p2 se han creado con mkfifo. ap1 y ap2 son programas de análisis. No sé si estoy diciendo esto bien, ¿pero hay una manera de tee
en dos nuevos fd en su lugar? Algo como esto:
exec 3< <(myprog)
tee >&4 >&5 <&3
cat <&4|ap1 &
cat <&5|ap2 &
Ahh. Eso puede funcionar Sin embargo, ¿hay alguna manera de llegar a la FD? ap1 y ap2 son enormes comandos con pipelines y toneladas de switches. Será más fácil de leer si puedo usar un fd. – User1
@ User1: definitivamente es posible (y tiene la ventaja de funcionar en shells que no son compatibles con '<()' and '>()'), pero la sintaxis es incómoda. Aquí sería más simple definir 'ap1' y' ap2' como funciones. – Gilles
¿Cuál es la otra sintaxis? Acabo de notar que uso sentencias if en algunas partes del script que modifican cómo se llama a ap1 de acuerdo con los parámetros de entrada. '>()' probablemente no funcionará demasiado bien en mi caso. Pero no sé cómo más puedo llamarlo. ¿Algunas ideas? Gracias por su ayuda hasta ahora. – User1