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