]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
sh: Allow terminating a heredoc with a terminator at EOF without a newline.
authorjilles <jilles@FreeBSD.org>
Fri, 20 May 2011 16:03:36 +0000 (16:03 +0000)
committerjilles <jilles@FreeBSD.org>
Fri, 20 May 2011 16:03:36 +0000 (16:03 +0000)
commit343e29c6261eb1e038805e04b47f83ff8e6f90c8
treed36d4f985b72c55479a85a920658c3ee1fdf0b01
parent4037bb644a26c751349e8cb47049a4f571047956
sh: Allow terminating a heredoc with a terminator at EOF without a newline.

This is sometimes used with eval or old-style command substitution, and most
shells other than ash derivatives allow it.

It can also be used with scripts that violate POSIX's requirement on the
application that they end in a newline (scripts must be text files except
that line length is unlimited).

Example:
v=`cat <<EOF
foo
EOF`
echo $v

This commit does not add support for the similar construct with new-style
command substitution, like
v=$(cat <<EOF
foo
EOF)
This continues to require a newline after the terminator.
bin/sh/parser.c
tools/regression/bin/sh/parser/heredoc11.0 [new file with mode: 0644]