Có, tiêu chuẩn POSIX cho phép điều này. Theo phiên bản 2008:
Tài liệu ở đây sẽ được coi là một từ duy nhất bắt đầu sau từ tiếp theo <newline>
và tiếp tục cho đến khi có một dòng chỉ chứa dấu phân cách và a <newline>
, không có <blank>
ký tự ở giữa. Sau đó, tài liệu tiếp theo ở đây bắt đầu, nếu có.
Và bao gồm ví dụ này về nhiều "tài liệu ở đây" trong cùng một dòng:
cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2
Vì vậy, không có vấn đề làm chuyển hướng hoặc đường ống. Ví dụ của bạn tương tự như thế này:
cat file |
cmd
Và ngữ pháp shell (tiếp tục xuống trên trang được liên kết) bao gồm các định nghĩa sau:
pipe_sequence : command
| pipe_sequence '|' linebreak command
newline_list : NEWLINE
| newline_list NEWLINE
;
linebreak : newline_list
| /* empty */
Vì vậy, một biểu tượng đường ống có thể được theo sau bởi một dòng cuối và vẫn được coi là một phần của đường ống.
big-long-command1 with lots of args << EOF | big-long-command2 with lots of args
. "Cú pháp lẻ" có vẻ như là cách tốt nhất.