| # 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 |
| |
| # check that \newline removal works for here-doc delimiter |
| cat << EOF |
| hi |
| EO\ |
| 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' |
| |
| #hush# bash warns: "here-document at line N delimited by end-of-file", |
| #hush# ash allows it, |
| #hush# hush errors out for now: |
| #hush# # check that end of file delimits a here-document |
| #hush# # THIS MUST BE LAST! |
| #hush# |
| #hush# cat << EOF |
| #hush# hi |
| #hush# there |