si quiero mostrar "aaa" en la pantalla:
(1)$: echo aaa | cat ... works OK
(2)$: echo aaa | ( cat ) ... works OK
(3)$: echo aaa | ( cat & ) ... NOT working
(4)$: ( echo aaa & ) | cat ... works OK
(5)$: echo aaa | ( cat <&0 & ) ... works ok in BASH (but not in SH)
(6)$: echo aaa | ( cat <&3 & ) 3<&0 ... works ok in BASH and SH
La exclusión de (3) y (4) -> proceso separado todavía tiene una salida conectada que puede ser controlada, utilizada, redirigida ... ¡pero no entrada!
Mi pregunta es: ¿alguien entiende por qué y cómo funciona la línea (5) ?
... "<& 0" es la abreviatura de "0 <& 0", por qué redirigir 0 a 0 es la solución, y lo que realmente sucede detrás con la entrada del proceso separado. Los subshell no son el problema, usar llaves {...} en lugar de (...) proporciona los mismos resultados.
... y pregunta2: ¿hay una mejor solución para "dar entrada al proceso separado" que la línea (6).