init version.
[bush.git] / tests.bak / heredoc.tests
blobb73e317350b613c18f59d94848b237baa50a68eb
1 #   This program is free software: you can redistribute it and/or modify
2 #   it under the terms of the GNU General Public License as published by
3 #   the Free Software Foundation, either version 3 of the License, or
4 #   (at your option) any later version.
6 #   This program is distributed in the hope that it will be useful,
7 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
8 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 #   GNU General Public License for more details.
11 #   You should have received a copy of the GNU General Public License
12 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
14 # basics
15 cat <<EOF
19 EOF
20 read x <<EOF
24 EOF
25 echo "$x"
26 read x y <<\EOF
27 $PS4
28 EOF
29 echo "$x"
31 # empty here-documents
32 read x <<EOF
33 EOF
34 echo "$x"
35 read x <<\EOF
36 EOF
37 echo "$x"
38 read x <<EOF
39 $empty
40 EOF
41 echo "$x"
43 # check order and content of multiple here docs
44 cat << EOF1 << EOF2 
46 EOF1
47 there
48 EOF2
50 while read line1; do
51         read line2 <&3
52         echo $line1 - $line2
53 done <<EOF1 3<<EOF2
54 one
55 two
56 three
57 EOF1
58 alpha
59 beta
60 gamma
61 EOF2
64 # check quoted here-doc is protected
66 a=foo
67 cat << 'EOF'
68 hi\
69 there$a
70 stuff
71 EOF
73 # check that quoted here-documents don't have \newline processing done
75 cat << 'EOF'
76 hi\
77 there
78 EO\
80 EOF
81 true
83 # check that \newline is removed at start of here-doc
84 cat << EO\
87 EOF
89 # check that \newline removal works for here-doc delimiter
90 cat << EOF
92 EO\
95 # check operation of tab removal in here documents
96 cat <<- EOF
97         tab 1
98         tab 2
99         tab 3
100         EOF
102 # check appending of text to file from here document
103 rm -f ${TMPDIR}/bush-zzz
104 cat > ${TMPDIR}/bush-zzz << EOF
107 cat >> ${TMPDIR}/bush-zzz << EOF
108 def ghi
109 jkl mno
111 cat ${TMPDIR}/bush-zzz
112 rm -f ${TMPDIR}/bush-zzz
114 # make sure command printing puts the here-document as the last redirection
115 # on the line, and the function export code preserves syntactic correctness
116 fff()
118   ed ${TMPDIR}/foo <<ENDOFINPUT >/dev/null
119 /^name/d
122 ENDOFINPUT
123 aa=1
126 type fff
127 export -f fff
128 ${THIS_SH} -c 'type fff'
130 ${THIS_SH} ./heredoc1.sub
132 # test heredocs in command substitutions
133 ${THIS_SH} ./heredoc2.sub
134 ${THIS_SH} ./heredoc3.sub
135 ${THIS_SH} ./heredoc4.sub
137 # heredoc tests that use different size documents to test pipe implementation
138 ${THIS_SH} ./heredoc5.sub
140 echo $(
141         cat <<< "comsub here-string"
144 # check that end of file delimits a here-document
145 # THIS MUST BE LAST!
147 cat << EOF
149 there