init version.
[bush.git] / tests.bak / nameref20.sub
blob898e65a2b15244988f3a3346baf53b0115d47367
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.
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.
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/>.
14 # a collection of cases in bug reports after bush-5.0-alpha was released
16 declare -n r=v[0]
17 v=(X); r=Y
18 declare -p ${!v*}
19 printf "%s: <%s>\n" "r" "$r" "v" "$v"
21 unset -n r
22 unset -v v
24 declare -n ref=var; declare -a ref
25 ref=(X)
26 declare -p ref var
28 unset -n ref
29 unset -v var
31 f() { declare -n ref=var; declare ref=(X); declare -p ref var; };
34 unset -f f
36 f() { declare -n ref=var; declare -g ref=(X); declare -p ref var; };
38 declare -n ref=foo
40 echo outside:
41 declare -p foo
43 unset -n ref
44 unset -v foo
45 unset -f f
47 f() { declare -n ref=var; declare -a ref; ref=(X); declare -p ref var; }
50 echo outside:
51 declare -p ref var
52 unset -f f
54 f() { declare -n ref=var; declare ref; ref=X; declare -p ref var; }
57 echo outside:
58 declare -p ref var
60 unset -f f
62 unset -n ref; unset var
64 f()
66         declare var=X; declare -n ref=var; declare ref=(Y)
67         declare -p ref var
71 unset -f f
73 declare -n ref=var
74 f() { local ref=Y; declare -p ref var; local; }
76 var=X
79 unset -v var
82 unset -n ref
83 unset -f f