Sí, el estándar POSIX permite esto. According to the 2008 version:
El documento interno será tratada como una sola palabra que comienza después de la próxima <newline>
y continúa hasta que hay una línea que contiene sólo el delimitador y una <newline>
, sin <blank>
caracteres entre ambas. Luego comienza el siguiente documento aquí, si hay uno.
E incluye este ejemplo de múltiples "los documentos internos" en la misma línea:
cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2
lo que no hay problema en hacer cambios de dirección o tuberías. Su ejemplo es similar a algo como esto:
cat file |
cmd
Y la gramática cáscara (más abajo en la página del enlace) incluye las siguientes definiciones:
pipe_sequence : command
| pipe_sequence '|' linebreak command
newline_list : NEWLINE
| newline_list NEWLINE
;
linebreak : newline_list
| /* empty */
lo tanto, un símbolo de canalización puede ser seguido por un End- de línea y todavía se considera parte de una tubería.
Vine aquí para encontrar una buena manera de dividir esta en varias líneas: 'big-largo comando1 con una gran cantidad de argumentos << EOF | big-long-command2 con muchos argumentos '. La "sintaxis impar" parece ser la mejor manera. – PaulC
Un caso de uso conveniente para esto es cuando intenta convertir una tabla delimitada por espacios en una que está delimitada por tabulaciones para que pueda pegarla en las hojas de cálculo de Google. No tendrá que crear un archivo temporal. –
La primera no funcionó para mí en z-shell. No me gusta el segundo porque aliena al | desde el comando, perdiendo el idioma (?) de las tuberías de concha. –