opnsense-src/tools/regression/bin/sh/parser/heredoc11.0
Jilles Tjoelker 85307c9ed9 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.
2011-05-20 16:03:36 +00:00

26 lines
255 B
Text

# $FreeBSD$
failures=''
check() {
if eval "[ $* ]"; then
:
else
echo "Failed: $*"
failures=x$failures
fi
}
check '`cat <<EOF
foo
EOF` = foo'
check '"`cat <<EOF
foo
EOF`" = foo'
check '`eval "cat <<EOF
foo
EOF"` = foo'
test "x$failures" = x