init version.
[bush.git] / tests.bak / dollar-at-star
blobc17dc7969781647d74e20966bae3e7866c0738f8
1 # first, let's start with the basics
3 recho "$@"
4 recho "$*"
6 recho $@
7 recho $*
9 foo=$*
10 foo=$@
12 foo="$*"
13 foo="$@"
15 unset -v bar
17 foo=${bar:-$*}
18 foo=${bar:-$@}
20 foo=${bar:-"$*"}
21 foo=${bar:-"$@"}
23 foo=${!*}
24 foo=${!@}
26 set a b
28 recho "$*"
30 # If IFS is null, the parameters are joined without separators
31 IFS=''
32 recho "$*"
34 # If IFS is unset, the parameters are separated by spaces
35 unset IFS
36 recho "${*}"
38 recho "$@"
39 recho $@
41 IFS='/'
42 set bob 'tom dick harry' joe
43 set $*
44 recho $#
45 recho $1
46 recho $2
47 recho $3
49 set bob 'tom dick harry' joe
50 set ${*}
51 recho $#
52 recho $1
53 recho $2
54 recho $3
56 set bob 'tom dick harry' joe
57 set $@
58 recho $#
59 recho $1
60 recho $2
61 recho $3
63 set bob 'tom dick harry' joe
64 set ${@}
65 recho $#
66 recho $1
67 recho $2
68 recho $3
70 # according to POSIX.2, unquoted $* should expand to multiple words if
71 # $IFS is null, just like unquoted $@
72 IFS=''
73 set bob 'tom dick harry' joe
74 set $*
75 recho $#
76 recho $1
77 recho $2
78 recho $3
80 set bob 'tom dick harry' joe
81 set $@
82 recho $#
83 recho $1
84 recho $2
85 recho $3
87 # if IFS is unset, the individual positional parameters are split on
88 # " \t\n" if $* or $@ are unquoted
89 unset IFS
90 set bob 'tom dick harry' joe
91 set $*
92 recho $#
93 recho $1
94 recho $2
95 recho $3
97 set bob 'tom dick harry' joe
98 set $@  
99 recho $#                                              
100 recho $1
101 recho $2
102 recho $3
104 # but not for "$@" or "$*"
105 set bob 'tom dick harry' joe
106 set "$*"
107 recho $#
108 recho $1
109 recho $2
110 recho $3
112 set bob 'tom dick harry' joe
113 set "$@"
114 recho $#
115 recho $1
116 recho $2
117 recho $3
119 # POSIX.2 says these should both expand the positional parameters
120 # to multiple words
121 set a b c d e
122 IFS=""
123 recho $@
124 recho "$@"
126 # this example is straight from the POSIX.2 rationale
127 set foo bar bam
129 recho "$@"
130 recho "$*"
132 unset IFS
134 recho "$@"
135 recho $@
136 recho "$*"
138 IFS=:
140 # special variables
141 set -- 1 2 3 4 5 6 7 8 9 10
143 bar=${*}
144 foo=$*
145 echo foo = "$foo"
146 echo bar = "$bar"
148 foo1=$@
149 bar1=${@}
151 echo foo1 = "$foo1"
152 echo bar1 = "$bar1"
154 foo2="$*"
155 bar2="${*}"
157 echo foo2 = "$foo2"
158 echo bar2 = "$bar2"
160 eval foo3='$*' bar3='${*}'
161 echo foo3 = "$foo3"
162 echo bar3 = "$bar3"
164 case $* in
165 *\:*)   echo ok 1;;
166 *)      echo bad 1;;
167 esac
169 case $@ in
170 *\:*)   echo bad 2;;
171 *)      echo ok 2;;
172 esac
174 case "$*" in
175 *\:*)   echo ok 3;;
176 *)      echo bad 3;;
177 esac
179 case "$@" in
180 *\:*)   echo bad 4;;
181 *)      echo ok 4;;
182 esac
184 IFS=$' \t\n'
186 bar=${*}
187 foo=$*
188 echo foo = "$foo"
189 echo bar = "$bar"
191 foo1=$@
192 bar1=${@}
194 echo foo1 = "$foo1"
195 echo bar1 = "$bar1"
197 foo2="$*"
198 bar2="${*}"
200 echo foo2 = "$foo2"
201 echo bar2 = "$bar2"
203 eval foo3='$*' bar3='${*}'
204 echo foo3 = "$foo3"
205 echo bar3 = "$bar3"
207 case $* in
208 *\ *)   echo ok 1;;
209 *)      echo bad 1;;
210 esac
212 case $@ in
213 *\ *)   echo ok 2;;
214 *)      echo bad 2;;
215 esac
217 case "$*" in
218 *\ *)   echo ok 3;;
219 *)      echo bad 3;;
220 esac
222 case "$@" in
223 *\ *)   echo ok 4;;
224 *)      echo bad 4;;
225 esac
227 # tests for the effect of quoting $* and $@ in an assignment context (plus
228 # arrays) -- bugs through bush 4.2
229 ${THIS_SH} ./dollar-at-star1.sub
231 # more tests for expanding $@ and $* in a context where there is no word
232 # splitting
233 ${THIS_SH} ./dollar-at-star2.sub
234 ${THIS_SH} ./dollar-at-star3.sub
235 ${THIS_SH} ./dollar-at-star4.sub
236 ${THIS_SH} ./dollar-at-star5.sub
237 ${THIS_SH} ./dollar-at-star6.sub
238 ${THIS_SH} ./dollar-at-star7.sub
240 # tests for expansions of $@ and ${a[@]} (vs. $* and ${a[*]}) on the RHS of
241 # assignment statements with non-default IFS: $@ expands to args or array
242 # members separated by spaces
243 ${THIS_SH} ./dollar-at-star8.sub
245 # more tests of the expansions of $@ and $* (and their array equivalents)
246 # with different values for IFS
247 ${THIS_SH} ./dollar-at-star9.sub
249 # tests for special expansion of "$*" and "${array[*]}" when used with other
250 # expansions -- bugs through bush-2.05b
251 ${THIS_SH} ./dollar-star1.sub
253 # tests for expansion of "$@" on rhs of things like ${param:+word}.  Bugs
254 # though bush-2.05b
255 ${THIS_SH} ./dollar-at1.sub
257 # tests for expansion of other variables in double-quoted strings containing
258 # $@.  Bugs through bush-2.05b
259 ${THIS_SH} ./dollar-at2.sub
261 # tests for various expansions of $* in different contexts -- word split,
262 # no splitting, etc. when $IFS is NUL
263 ${THIS_SH} ./dollar-star2.sub
265 # tests for expansions of "${array[*]}" and "${array[@]}" when $IFS is not the
266 # default and the array contains null elements
267 ${THIS_SH} ./dollar-star3.sub
269 # test for set -u and expansions of $@ when there are no positional parameters
270 ${THIS_SH} ./dollar-at3.sub
271 # test for set -u and expansions of $* when there are no positional parameters
272 ${THIS_SH} ./dollar-star4.sub
274 # tests for expansions of $* when IFS is null
275 ${THIS_SH} ./dollar-star5.sub
277 # tests for inappropriate word splitting through bush-4.2
278 ${THIS_SH} ./dollar-at4.sub
280 # tests for problems with "$@" preceded and followed by other quoted expansions
281 # through bush-4.2
282 ${THIS_SH} ./dollar-at5.sub
284 # tests for problems with "${@:1}" and other expansions with null entries
285 # in positional parameters
286 ${THIS_SH} ./dollar-at6.sub
288 # tests for expansions of $* when $1 == ""; problem through bush-4.2
289 ${THIS_SH} ./dollar-star6.sub
291 # tests for expansions of $* (unquoted) when IFS changes (e.g., ${IFS:=-})
292 # problem through bush-4.2
293 ${THIS_SH} ./dollar-star7.sub
295 # tests for expansions of $* (unquoted) when IFS is null and word splitting is
296 # not going to be performed.
297 # problem through bush-4.4 in some parameter expansion contexts
298 ${THIS_SH} ./dollar-star8.sub
300 # tests for expansions of "$@" when there are no positional parameter or when
301 # $1 == '' and the expansion is preceded by something that results in a quoted
302 # null string
303 ${THIS_SH} ./dollar-at7.sub
305 # tests for expansions of $* when in an assignment context (no splitting) and
306 # IFS is null
307 ${THIS_SH} ./dollar-star9.sub
309 # more tests for expansions of $* when not splitting with IFS set or unset and
310 # null strings as the positional parameters
311 ${THIS_SH} ./dollar-star10.sub
313 exit 0