Tak, standard POSIX na to pozwala. Według wersji z 2008 roku:
Dokument tutaj będzie traktowany jako pojedyncze słowo, które zaczyna się po następnym <newline>
i trwa do momentu, gdy pojawi się wiersz zawierający tylko separator i a <newline>
, bez <blank>
znaków między nimi. Następnie rozpoczyna się następny dokument tutaj, jeśli taki istnieje.
I zawiera ten przykład wielu „dokumentów tutaj” w jednym wierszu:
cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2
Nie ma więc problemu z przekierowaniami lub potokami. Twój przykład jest podobny do tego:
cat file |
cmd
A gramatyka powłoki (dalej na połączonej stronie) zawiera następujące definicje:
pipe_sequence : command
| pipe_sequence '|' linebreak command
newline_list : NEWLINE
| newline_list NEWLINE
;
linebreak : newline_list
| /* empty */
Tak więc po symbolu rury może następować koniec linii i nadal może być uważany za część rurociągu.
big-long-command1 with lots of args << EOF | big-long-command2 with lots of args
. „Dziwna składnia” wydaje się najlepszym sposobem.