Date: Sat, 15 Mar 2025 19:42:54 +0000
From: Nikola Novak via Bug reports for the GNU Bourne Again SHell
<[email protected]>
Message-ID:
<wwypcx2pNs4qBYaa-kztdAc3A3IPRoyfATS8MSoj3jKz3L-BeBQ96dQ52m2cSpL3BOIRzw18KRqWt6lmWVslUnADzNfFNexb6jLCk_QonYI=@proton.me>
| OK, thank you!
| It's a relief, actually, to hear that. :)
The reason for this is that POSIX says (XCU 2.7.4):
The here-document shall be treated as a single word that begins
after the next NEWLINE token and continues until there is a line
containing only the delimiter and a <newline>,
and the definition of "line" (from XBD 3.185) is:
A sequence of zero or more non-<newline> characters plus a
terminating <newline> character.
Since the line cannot contain a \n and the reading the here-doc text
continues until there is a line containing (only) the delimiter, logically
a delimiter containing a \n will never be located (it is not however a
syntax error, unless the shell decides to treat non-terminated here-docs
as an error, which it is encouraged to do, but not required).
FWIW, the NetBSD shell, as an extension, allows this to work, the code
to handle multi-line end delimiters isn't all that hard (not hard at
all really).
kre