Ответ 1
Да, стандарт POSIX позволяет это. Согласно версии 2008:
Настоящий документ должен рассматриваться как одно слово, которое начинается после следующий
<newline>
и продолжается до тех пор, пока не будет строка, содержащая только разделитель и<newline>
, без знаков<blank>
между ними. Затем начинается следующий документ, если он есть.
И включает в себя этот пример нескольких "здесь-документов" в одной строке:
cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2
Таким образом, нет проблем с перенаправлением или трубами. Ваш пример похож на что-то вроде этого:
cat file |
cmd
И грамматика оболочки (далее на связанной странице) содержит следующие определения:
pipe_sequence : command
| pipe_sequence '|' linebreak command
newline_list : NEWLINE
| newline_list NEWLINE
;
linebreak : newline_list
| /* empty */
Таким образом, символу трубы может следовать конец строки и по-прежнему считать частью конвейера.