Ya, standar POSIX memungkinkan ini. Menurut versi 2008:
Dokumen di sini akan diperlakukan sebagai satu kata yang dimulai setelah kata berikutnya <newline>
dan berlanjut sampai ada garis yang hanya berisi pembatas dan a <newline>
, tanpa <blank>
karakter di antaranya. Kemudian di sini dokumen selanjutnya dimulai, jika ada.
Dan termasuk contoh beberapa "dokumen-sini" di baris yang sama:
cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2
Jadi tidak ada masalah melakukan pengalihan atau pipa. Contoh Anda mirip dengan sesuatu seperti ini:
cat file |
cmd
Dan tata bahasa shell (lebih jauh ke bawah pada halaman tertaut) mencakup definisi ini:
pipe_sequence : command
| pipe_sequence '|' linebreak command
newline_list : NEWLINE
| newline_list NEWLINE
;
linebreak : newline_list
| /* empty */
Jadi simbol pipa dapat diikuti oleh end-of-line dan masih dianggap sebagai bagian dari pipa.
big-long-command1 with lots of args << EOF | big-long-command2 with lots of args
. "Sintaks ganjil" sepertinya cara terbaik.