init version.
[bush.git] / tests.bak / nameref8.sub
blob465463bfbd2f62ffde0cb42d5a047560775b9dcc
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 function f1
16         typeset -n v=$1
18         v=inside
21 v=global
22 f1 v
23 echo $v
25 unset v
26 unset -f f1
28 function foo
30         typeset x=one
32         typeset -n y=$1
33         y=two
34         echo inside: $x
37 foo x
38 echo outside: $x
40 function foo2
42         typeset -n x=$1
44         x=foo
47 foo2 x
48 echo $x
50 unset -f foo
51 function foo { typeset -n v=$1; v=local; }
53 v=global
54 foo v
55 echo $v
57 unset v
59 # invalid self reference at global scope
60 typeset -n v=v
62 # can we catch a circular self-reference?
63 typeset -n v=w
64 typeset -n w=x
65 typeset -n x=v
67 x=4
68 echo x = $x
70 unset -n v w x
72 # can we keep local variables invisible when we add nameref attribute?
73 function f { typeset x; typeset -n x; x=y; }