Sim, o padrão POSIX permite isso. De acordo com a versão de 2008:
O documento aqui deve ser tratado como uma única palavra que começa após a próxima <newline>
e continua até que exista uma linha contendo apenas o delimitador e a <newline>
, sem <blank>
caracteres no meio. Então, o próximo documento aqui começa, se houver um.
E inclui este exemplo de vários "documentos aqui" na mesma linha:
cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2
Portanto, não há nenhum problema ao fazer redirecionamentos ou pipes. Seu exemplo é semelhante a algo assim:
cat file |
cmd
E a gramática do shell (mais abaixo na página vinculada) inclui estas definições:
pipe_sequence : command
| pipe_sequence '|' linebreak command
newline_list : NEWLINE
| newline_list NEWLINE
;
linebreak : newline_list
| /* empty */
Portanto, um símbolo de tubulação pode ser seguido por um final de linha e ainda ser considerado parte de uma tubulação.
big-long-command1 with lots of args << EOF | big-long-command2 with lots of args
. A "sintaxe ímpar" parece ser a melhor maneira.