]> git.ipfire.org Git - thirdparty/bash.git/blob - tests/dollar-at5.sub
bash-5.1 distribution sources and documentation
[thirdparty/bash.git] / tests / dollar-at5.sub
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.
5 #
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.
10 #
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/>.
13 #
14 args() { printf '<%s> ' "$@"; echo; }
15
16 set -- 1 2 3 4 5
17
18 args "${@} ${1}"
19 args "${1} ${@}"
20 args "${1}${@}${1}"
21 args "${1} ${@} ${1}"
22 args ${1}"$@"${1}
23 args "$@"${1}
24 args ${1}"$@"
25
26 args "$@""${1}"
27 args "${1}""$@"
28
29 args "${@}foo"
30 args ${@}${1}
31 args ${@}foo
32
33 IFS=
34 args "$@""${1}"
35 args "${1}""$@"
36
37 args ${@}${1}
38 args ${1}${@}
39 args ${@}foo
40
41 echo second set:
42 IFS=$' \t\n'
43 set -- '1 2' 3 4 5
44
45 args "${@} ${1}"
46 args "${1} ${@}"
47
48 args "${1}${@}${1}"
49 args "${1} ${@} ${1}"
50 args ${1}"$@"${1}
51 args "$@"${1}
52 args ${1}"$@"
53
54 args "$@""${1}"
55 args "${1}""$@"
56
57 args "${@}foo"
58 args ${@}${1}
59 args ${@}foo
60
61 IFS=
62
63 args "$@""${1}"
64 args "${1}""$@"
65
66 args ${@}${1}
67 args ${1}${@}
68 args ${@}foo
69
70 echo third set:
71 IFS=$' \t\n'
72
73 alias declare=typeset
74
75 a(){ echo
76 echo '"${@:2}a3 a2" a$1 #works as long as $1 and 3 are swapped'
77 echo "${@:2}a3 a2" a$1
78 "${@:2}a3 a2" a$1
79 echo $?
80 a=("${@}");}
81 b(){ echo
82 echo '"${@:2}b$1 b2" b3 #fails! why?'
83 echo "${@:2}b$1 b2" b3
84 "${@:2}b$1 b2" b3
85 echo $?
86 b=("${@}");}
87 c(){ echo
88 echo '${@:2}c$1 c2 c3 #works as long as quoting omitted'
89 echo ${@:2}c$1 c2 c3
90 ${@:2}c$1 c2 c3
91 echo $?
92 c=("${@}");}
93 a x set y z;declare -p a
94 b x set y z;declare -p b
95 c x set y z;declare -p c