busybox/shell/ash_test/ash-heredoc/heredoc_backslash1.tests
Denys Vlasenko 220be537a0 ash: use pgetc_eatbnl() in more places
Part of upstream commit:

    Date:   Thu Mar 8 08:37:11 2018 +0100
    Author: Harald van Dijk <harald@gigawatt.nl>
    parser: use pgetc_eatbnl() in more places

    dash has a pgetc_eatbnl function in parser.c which skips any
    backslash-newline combinations. It's not used everywhere it could be.
    There is also some duplicated backslash-newline handling elsewhere in
    parser.c. Replace most of the calls to pgetc() with calls to
    pgetc_eatbnl() and remove the duplicated backslash-newline handling.

    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Not adding "readtoken1(pgetc_eatbnl(), DQSYNTAX..." changes, since
readtoken1() handles the "starts with backslash + newline" case itself.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-03-31 19:40:56 +02:00

71 lines
1.4 KiB
Plaintext
Executable File

# Test for correct handling of backslashes.
# Note that some lines in each heredoc start with a tab.
a=qwerty
echo Quoted heredoc:
cat <<"EOF1"
a\
b
a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
c\
EOF1
echo
echo Unquoted heredoc:
cat <<EOF2
a\
b
a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
c\
EOF2
EOF2
echo
echo Quoted -heredoc:
cat <<-"EOF3"
a\
b
a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
c\
EOF3
# In -heredoc case the marker is detected even if it is indented.
echo
echo Unquoted -heredoc:
cat <<-EOF4
a\
b
a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
c\
EOF4
EOF4
# The marker is not detected if preceding line ends in backslash.
# TODO: marker should be detected even if it is split by line continuation:
# EOF\
# 4
# but currently hush doesn't do it. (Tab before "4" is not allowed, though.)
echo
echo "Done: $?"