]> git.ipfire.org Git - thirdparty/bash.git/blob - tests/more-exp.tests
Imported from ../bash-2.0.tar.gz.
[thirdparty/bash.git] / tests / more-exp.tests
1 expect()
2 {
3 echo expect "$@"
4 }
5
6 tool_var() {
7 eval $1=\"\${$1:-$2}\"
8 export $1
9 }
10
11 A="aaa bbb ccc"
12
13 unset B
14
15 tool_var B ${B:-"$A"}
16
17 expect '<aaa bbb ccc>'
18 recho "$A"
19 expect '<aaa bbb ccc>'
20 recho "$B"
21
22 eto_prepend() {
23 eval $1=\'$2\''${'$1':+":"${'$1'}}'; export $1
24 }
25
26 foo=bar; export foo
27 eto_prepend foo baz
28 expect '<baz:bar>'
29 recho $foo
30 expect '<baz:bar>'
31 recho ${foo-"bar"}
32
33 aa='aaa bbb ccc'
34
35 expect '<aaa bbb ccc>'
36 recho ${zzz-"$aa"}
37 expect '<bar>'
38 recho ${zzz:-"bar"}
39 expect '<bar>'
40 recho "${zzz:-bar}"
41 expect '<bar>'
42 recho "${zzz:-"bar"}"
43
44 var=abcde
45 expect '<abcde>'
46 recho "${var:-xyz}"
47 expect '<abcde>'
48 recho "${var:=xyz}"
49 expect '<xyz>'
50 recho "${var:+xyz}"
51
52 set 'a b' c d e f
53 expect '<a b> <c> <d> <e> <f>'
54 recho ${1+"$@"}
55 expect '<a b>'
56 recho "${1-"$@"}"
57 expect '<a> <b>'
58 recho ${1-"$@"}
59 expect '<a b> <c> <d> <e> <f>'
60 recho "${1+$@}"
61 expect '<a b> <c> <d> <e> <f>'
62 recho "${1+"$@"}"
63
64 HOME=/usr/homes/chet
65 somevar=
66 expect "<$HOME>"
67 recho ${somevar:-~}
68 expect "<$HOME>"
69 recho "${somevar:-~}"
70 expect '<~>'
71 recho "${somevar:-"~"}"
72 expect '<\~>'
73 recho "${somevar:-\~}"
74 expect '<\ \~>'
75 recho "${somevar:-\ \~}"
76 expect '<\ \ \~>'
77 recho "${somevar:-\ \ \~}"
78
79 expect "<$HOME>"
80 recho ${somevar:-$HOME}
81 expect "<$HOME>"
82 recho "${somevar:-$HOME}"
83 expect "<$HOME>"
84 recho "${somevar:-"$HOME"}"
85 expect '<$HOME>'
86 recho "${somevar:-\$HOME}"
87 expect '<\ $HOME>'
88 recho "${somevar:-\ \$HOME}"
89 expect '<\ \ $HOME>'
90 recho "${somevar:-\ \ \$HOME}"
91
92 foo=bar
93 expect "<'bar'>"
94 recho "${foo+'$foo'}"
95 expect "<'bar'>"
96 recho "${fox='$foo'}"
97
98 P='*@*'
99 expect '<*@*>'
100 recho "${P%"*"}"
101 expect '<*@*>'
102 recho "${P%'*'}"
103
104 expect '<*@>'
105 recho ${P%"*"}
106 expect '<*@>'
107 recho ${P%'*'}
108
109 expect '<*@*>'
110 recho ${P%""}
111 expect '<*@*>'
112 recho ${P#""}
113
114 expect '<*@*>'
115 recho ${P#"$foobar"}
116 expect '<*@*>'
117 recho ${P%"$foobar"}
118
119 s1=abcdefghijkl
120 s2=efgh
121
122 first=${s1/$s2*/}
123 expect '<abcd>'
124 recho $first
125
126 last=${s1##$first}
127 expect '<efghijkl>'
128 recho $last
129
130 shift $#
131 UNAME_RELEASE=${1:-4.2MP}
132
133 RELEASE=`expr "$UNAME_RELEASE" : '[^0-9]*\([0-9]*\)'` # 4
134 case "$RELEASE" in
135 "") RELEASE=0 ;;
136 *) RELEASE=`expr "$RELEASE" + 0` ;;
137 esac
138 REL_LEVEL=`expr "$UNAME_RELEASE" : '[^0-9]*[0-9]*.\([0-9]*\)'` # 1
139 REL_SUBLEVEL=`expr "$UNAME_RELEASE" : '[^0-9]*[0-9]*.[0-9]*.\([0-9]*\)'` # 2
140
141 expect '<4> <2>'
142 recho $RELEASE $REL_LEVEL $REL_SUBLEVEL
143
144 b1()
145 {
146 b2 ${1+"$@"}
147 }
148
149 b2()
150 {
151 recho $*
152 recho $#
153 }
154
155 expect '<1>'
156 b1 ''
157
158 expect '<bar> <2>'
159 b1 bar ''
160
161 expect '<bar> <2>'
162 b1 '' bar
163
164 expect '<4>'
165 b1 '' '' '' ''
166
167 NL="\\
168 "
169
170 NNL="+$NL+"
171
172 expect '<--\> <-->'
173 recho --$NL--
174 expect '<--\^J-->'
175 recho "--$NL--"
176
177 expect '<--+\> <+-->'
178 recho --$NNL--
179 expect '<--+\^J+-->'
180 recho "--$NNL--"
181
182 expect '<-+\> <+-\> <->'
183 recho -$NNL-$NL-
184
185 set ''
186 expect '<xy>'
187 recho "$*xy"
188 expect '<xy>'
189 recho "x$*y"
190 expect '<xy>'
191 recho "xy$*"
192 expect '<>'
193 recho "$*"
194 expect nothing
195 recho $*
196
197 unset undef ; set ""
198
199 recho ${undef-"$zzz"}
200 recho x${undef-"$zzz"}
201 recho x${undef-"$@"}
202 recho ${undef-"$@"}
203 recho ${undef-"$zzz"}x
204 recho ${undef-"$@"}x
205 recho "$@"x
206 recho "$zzz"x
207 recho ${undef-\7f}
208 recho ${undef-"\7f"}
209
210 yyy=""
211 recho "$xxx"x
212 recho "$yyy"x
213
214 set "" "abd" ""
215 recho "$@"x
216 recho "$@"$xxx
217
218 OIFS="$IFS"
219
220 arg=a,b,c,d,e,f
221
222 IFS=,
223
224 export z=$arg
225
226 eval z1=\"$arg\"
227
228 IFS="$OIFS"
229
230 recho $z
231 recho $z1
232
233 # should give an error
234 abc\=def
235
236 zz="a b c d e"
237 declare a=$zz
238
239 recho "$a"
240 recho $a
241
242 recho $(echo "foo$(echo ")")")
243
244 # test backslash escapes
245
246 recho \a
247 recho \\a
248
249 recho "\a"
250 recho "\\a"
251
252 recho '\a'
253 recho '\\a'
254
255 recho $(zecho \a)
256 recho $(zecho \\a)
257
258 recho $(zecho "\a")
259 recho $(zecho "\\a")
260
261 recho $(zecho '\a')
262 recho $(zecho '\\a')
263
264 recho `zecho \a`
265 recho `zecho \\a`
266
267 recho `zecho "\a"`
268 recho `zecho "\\a"`
269
270 recho `zecho '\a'`
271 recho `zecho '\\a'`
272
273 a=foo
274
275 recho \$a
276 recho \\$a
277
278 recho "\$a"
279 recho "\\$a"
280
281 recho '\$a'
282 recho '\\$a'
283
284 recho $(zecho `zecho \a`)
285 recho $(zecho `zecho \\a`)
286
287 recho $(zecho `zecho "\a"`)
288 recho $(zecho `zecho "\\a"`)
289
290 recho $(zecho `zecho '\a'`)
291 recho $(zecho `zecho '\\a'`)
292
293 # should echo G { I K }
294 recho ${abc:-G { I } K }
295
296 abc=hi
297
298 # should echo hi K }
299 recho ${abc:-G { I } K }
300
301 # should echo a*
302 unset foo
303 recho "${foo:-"a"}*"