Sí, el estándar POSIX lo permite. Según la versión 2008:
El documento aquí se tratará como una sola palabra que comienza después de la siguiente <newline>
y continúa hasta que haya una línea que contenga solo el delimitador y a <newline>
, sin <blank>
caracteres intermedios. Entonces comienza el siguiente documento aquí, si hay uno.
E incluye este ejemplo de múltiples "documentos aquí" en la misma línea:
cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2
Por lo tanto, no hay problema para hacer redirecciones o tuberías. Su ejemplo es similar a algo como esto:
cat file |
cmd
Y la gramática del shell (más abajo en la página vinculada) incluye estas definiciones:
pipe_sequence : command
| pipe_sequence '|' linebreak command
newline_list : NEWLINE
| newline_list NEWLINE
;
linebreak : newline_list
| /* empty */
Por lo tanto, un símbolo de tubería puede ir seguido de un final de línea y aún así considerarse parte de una tubería.
big-long-command1 with lots of args << EOF | big-long-command2 with lots of args
. La "sintaxis impar" parece ser la mejor manera.