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
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top