1*3e3895bfSKrzysztof Piecuch# $FreeBSD: head/bin/sh/tests/parser/heredoc9.0 221887 2011-05-14 14:19:30Z jilles $ 22687e410SPeter Avalos 32687e410SPeter Avalos# It may be argued that 42687e410SPeter Avalos# x=$(cat <<EOF 52687e410SPeter Avalos# foo 62687e410SPeter Avalos# EOF) 72687e410SPeter Avalos# is a valid complete command that sets x to foo, because 82687e410SPeter Avalos# cat <<EOF 92687e410SPeter Avalos# foo 102687e410SPeter Avalos# EOF 112687e410SPeter Avalos# is a valid script even without the final newline. 122687e410SPeter Avalos# However, if the here-document is not within a new-style command substitution 132687e410SPeter Avalos# or there are other constructs nested inside the command substitution that 142687e410SPeter Avalos# need terminators, the delimiter at the start of a line followed by a close 152687e410SPeter Avalos# parenthesis is clearly a literal part of the here-document. 162687e410SPeter Avalos 172687e410SPeter Avalos# This file contains tests that also work with simplistic $(...) parsers. 182687e410SPeter Avalos 192687e410SPeter Avalosfailures=0 202687e410SPeter Avalos 212687e410SPeter Avaloscheck() { 222687e410SPeter Avalos if ! eval "[ $* ]"; then 232687e410SPeter Avalos echo "Failed: $*" 242687e410SPeter Avalos : $((failures += 1)) 252687e410SPeter Avalos fi 262687e410SPeter Avalos} 272687e410SPeter Avalos 282687e410SPeter Avaloscheck '`${SH} -c "cat <<EOF 292687e410SPeter AvalosEOF) 302687e410SPeter AvalosEOF 312687e410SPeter Avalos"` = "EOF)"' 322687e410SPeter Avalos 332687e410SPeter Avaloscheck '`${SH} -c "(cat <<EOF 342687e410SPeter AvalosEOF) 352687e410SPeter AvalosEOF 362687e410SPeter Avalos)"` = "EOF)"' 372687e410SPeter Avalos 382687e410SPeter Avaloscheck '"`cat <<EOF 392687e410SPeter AvalosEOF x 402687e410SPeter AvalosEOF 412687e410SPeter Avalos`" = "EOF x"' 422687e410SPeter Avalos 432687e410SPeter Avaloscheck '"`cat <<EOF 442687e410SPeter AvalosEOF ) 452687e410SPeter AvalosEOF 462687e410SPeter Avalos`" = "EOF )"' 472687e410SPeter Avalos 482687e410SPeter Avaloscheck '"`cat <<EOF 492687e410SPeter AvalosEOF) 502687e410SPeter AvalosEOF 512687e410SPeter Avalos`" = "EOF)"' 522687e410SPeter Avalos 532687e410SPeter Avaloscheck '"$(cat <<EOF 542687e410SPeter AvalosEOF x 552687e410SPeter AvalosEOF 562687e410SPeter Avalos)" = "EOF x"' 572687e410SPeter Avalos 582687e410SPeter Avalosexit $((failures != 0)) 59