]> git.ipfire.org Git - thirdparty/bash.git/blame - tests/nameref20.sub
Bash-5.2-rc4 release
[thirdparty/bash.git] / tests / nameref20.sub
CommitLineData
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#
d233b485
CR
14# a collection of cases in bug reports after bash-5.0-alpha was released
15
16declare -n r=v[0]
17v=(X); r=Y
18declare -p ${!v*}
19printf "%s: <%s>\n" "r" "$r" "v" "$v"
20
21unset -n r
22unset -v v
23
24declare -n ref=var; declare -a ref
25ref=(X)
26declare -p ref var
27
28unset -n ref
29unset -v var
30
31f() { declare -n ref=var; declare ref=(X); declare -p ref var; };
32f
33
34unset -f f
35
36f() { declare -n ref=var; declare -g ref=(X); declare -p ref var; };
37
38declare -n ref=foo
39f
40echo outside:
41declare -p foo
42
43unset -n ref
44unset -v foo
45unset -f f
46
47f() { declare -n ref=var; declare -a ref; ref=(X); declare -p ref var; }
48
49f
50echo outside:
51declare -p ref var
52unset -f f
53
54f() { declare -n ref=var; declare ref; ref=X; declare -p ref var; }
55
56f
57echo outside:
58declare -p ref var
59
60unset -f f
61
62unset -n ref; unset var
63
64f()
65{
66 declare var=X; declare -n ref=var; declare ref=(Y)
67 declare -p ref var
68}
69f
70
71unset -f f
72
73declare -n ref=var
74f() { local ref=Y; declare -p ref var; local; }
75
76var=X
77f
78
79unset -v var
80f
81
82unset -n ref
83unset -f f
84