]>
Commit | Line | Data |
---|---|---|
8868edaf CR |
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 | # | |
a0c0a00f CR |
14 | # testing behavior of command substitution as one of expansions performed by |
15 | # array subscripting; should behave the same directly as when done through | |
16 | # a nameref | |
17 | ||
18 | x[0]=42 | |
19 | zero=0 | |
20 | f() { typeset -n foo="$1"; declare -p foo; echo "$foo"; } | |
21 | ||
22 | f 'x[$zero]' | |
23 | ||
24 | x[$(echo 0)]=4 | |
25 | declare -p x | |
26 | ||
27 | f 'x[$(echo 0)]' | |
28 | ||
29 | unset -f f | |
30 | f() | |
31 | { | |
32 | typeset -n foo="$1"; | |
33 | ||
34 | echo "x[i=0$(echo comsub >&2)]" | |
35 | echo "${x[i=0$(echo comsub >&2)]}" | |
36 | echo "${!1}" | |
37 | echo "$foo" | |
38 | } | |
39 | ||
40 | f 'x[i=0$(echo comsub >&2)]' | |
41 | ||
42 | unset -f f | |
43 | unset x | |
44 | ||
45 | # problems with unset and namerefs pointing to non-existent variables pointed | |
46 | # out after bash-4.3 released | |
47 | ||
48 | typeset -n foo=somevariable | |
49 | foo=bar | |
50 | unset foo # unsets somevariable | |
51 | typeset -p foo somevariable | |
52 | echo foo = $foo | |
53 | ||
54 | typeset -A foo # should create array variable named somevariable | |
55 | foo["jug"]="brown" | |
56 | ||
57 | typeset -p foo somevariable | |
58 | typeset -A foo='([jug]="brown" )' | |
59 | typeset -p foo somevariable | |
60 | ||
61 | unset foo | |
62 | typeset -p foo somevariable | |
63 | unset -n foo | |
64 | typeset -p foo somevariable | |
65 | ||
66 | unset bar | |
67 | typeset -n foo=bar | |
68 | typeset -p foo bar | |
69 | unset foo | |
70 | typeset -p foo bar | |
71 | typeset -i foo | |
72 | foo=4+4 | |
73 | typeset -p foo bar | |
74 | echo "$foo" | |
75 | ||
76 | unset foo | |
77 | typeset -p foo bar |