prueba de doble redirección
-
30-09-2019 - |
Pregunta
¿Qué tiene esto imprimir su concha?
echo foo | while read line; do echo $line; done < <(echo bar)
Me lo esperaría para evaluar a echo foo | bar
o foo < <(bar)
, tanto de lo que resultaría en un mensaje de error.
En Bash 4.1.5 parece que el tubo simplemente se descarta:
bar
En Dash:
sh: Syntax error: redirection unexpected
Solución
Dash no soporta sustitución de proceso (<()
).
El comportamiento que se está viendo es consistente si se utiliza la sintaxis que está soportado por cada uno de los proyectiles que está comparando. Prueba esto:
echo hello | cat < inputfile
Debería ver el contenido de "archivo de entrada" y no "hola". De varios proyectiles que probé, sólo se Zsh mostró ambos.
Esto es lo que dice relación con POSIX tuberías y la redirección:
La salida estándar de command1 estará conectado a la entrada estándar de command2. se considerará que la entrada estándar, salida estándar, o ambos de un comando a ser asignado por la tubería antes de cualquier redirección especificada por operadores de redirección que son parte del comando (véase la redirección).
Me interpretar que esto significa que en el caso del ejemplo anterior, los cesionarios de tuberías StdIn a cat
entonces las anulaciones de redirección de la misma.