# check order and content of multiple here docs

cat << EOF1 << EOF2
hi
EOF1
there
EOF2

while read line1; do
	read line2 <&3
	echo $line1 - $line2
done <<EOF1 3<<EOF2
one
two
three
EOF1
alpha
beta
gamma
EOF2


# check quoted here-doc is protected

a=foo
cat << 'EOF'
hi\
there$a
stuff
EOF

# check that quoted here-documents don't have \newline processing done

cat << 'EOF'
hi\
there
EO\
F
EOF
true

# check that \newline is removed at start of here-doc
cat << EO\
F
hi
EOF

#ash# # check that \newline removal works for here-doc delimiter
#ash# cat << EOF
#ash# hi
#ash# EO\
#ash# F

# check operation of tab removal in here documents
cat <<- EOF
	tab 1
	tab 2
	tab 3
	EOF

# check appending of text to file from here document
rm -f /tmp/bash-zzz
cat > /tmp/bash-zzz << EOF
abc
EOF
cat >> /tmp/bash-zzz << EOF
def ghi
jkl mno
EOF
cat /tmp/bash-zzz
rm -f /tmp/bash-zzz

# make sure command printing puts the here-document as the last redirection
# on the line, and the function export code preserves syntactic correctness
fff()
{
  ed /tmp/foo <<ENDOFINPUT >/dev/null
/^name/d
w
q
ENDOFINPUT
aa=1
}

type fff
#ash# export -f fff
#ash# ${THIS_SH} -c 'type fff'

# check that end of file delimits a here-document
# THIS MUST BE LAST!

cat << EOF
hi
there
