]> git.ipfire.org Git - thirdparty/bash.git/blob - tests/nameref15.sub
bash-5.0 distribution sources and documentation
[thirdparty/bash.git] / tests / nameref15.sub
1 f() { local -n a=$1; a=X; }
2
3 a=(0); f 'a[0]'
4 while [[ -v a ]]; do declare -p a; unset a; done
5
6 a=(0); f 'a'
7 while [[ -v a ]]; do declare -p a; unset a; done
8
9 b=(0); f 'b[0]'
10 while [[ -v a ]]; do typeset -p a; unset a; done
11 typeset -p b
12
13 b=(0); f 'a[0]'
14 while [[ -v a ]]; do typeset -p a; unset a; done
15 typeset -p b
16
17 add_X_echo()
18 {
19 typeset -n ref=$1
20 ref+=X
21 echo inside $ref
22 }
23
24 ref=
25 add_X_echo ref
26 echo outside "$ref"
27 unset ref
28
29 # same test, but assigning nameref variable circular reference directly
30 xxx_func()
31 {
32 typeset -n xxx=xxx
33 xxx=foo
34 declare -p xxx
35 echo $FUNCNAME: inside: xxx = $xxx
36 }
37
38 xxx=7
39 echo before: $xxx
40 xxx_func
41 echo after: $xxx
42
43 unset xxx
44 unset -f xxx_func
45
46 typeset -n ref=ref
47
48 typeset -n ref=re ref+=f
49 typeset -p ref
50 ref=4
51 typeset -p ref re
52
53 export ref
54 printenv ref
55 printenv re
56
57 unset ref ; unset -n ref
58 unset foo; unset -n foo
59
60 typeset -n foo=var[@]
61 typeset -p foo
62 typeset -n ref=var ref+=[@]
63 typeset -p ref
64
65 ref=42
66
67 typeset -n bar
68 bar=var[@]
69 typeset -p bar
70 bar=7
71
72 unset a b
73 unset -n a b
74
75 typeset -n a=b b
76 b=a[1]
77 typeset -p a b
78 a=foo
79 typeset -p a b
80
81 unset a
82 typeset -n a=b
83 declare a=foo
84 typeset -p a b
85
86 unset n v
87 unset -n n v
88
89 v=(0 1)
90 typeset -n n=v
91 unset n[0]
92 typeset -p n v
93
94 unset -n n
95
96 v=(0 1)
97 typeset -n n=v
98 unset -n n
99 typeset -p n v
100
101 v=(0 1)
102 declare -n n=v[1]
103 unset n
104 declare -p n v