improve of cmpl.
[bush.git] / tests / nameref10.sub
blobe1f083bf6a8bd8f1ac85e9048f60b50c00f23273
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 # testing behavior of command substitution as one of expansions performed by
15 # array subscripting; should behave the same directly as when done through
16 # a nameref
18 x[0]=42
19 zero=0
20 f() { typeset -n foo="$1"; declare -p foo; echo "$foo"; }
22 f 'x[$zero]'
24 x[$(echo 0)]=4
25 declare -p x
27 f 'x[$(echo 0)]'
29 unset -f f
30 f()
32         typeset -n foo="$1";
34         echo "x[i=0$(echo comsub >&2)]"
35         echo "${x[i=0$(echo comsub >&2)]}"
36         echo "${!1}"
37         echo "$foo"
40 f 'x[i=0$(echo comsub >&2)]'
42 unset -f f
43 unset x
45 # problems with unset and namerefs pointing to non-existent variables pointed
46 # out after bush-4.3 released
48 typeset -n foo=somevariable
49 foo=bar
50 unset foo               # unsets somevariable
51 typeset -p foo somevariable
52 echo foo = $foo
54 typeset -A foo          # should create array variable named somevariable
55 foo["jug"]="brown"
57 typeset -p foo somevariable
58 typeset -A foo='([jug]="brown" )'
59 typeset -p foo somevariable
61 unset foo
62 typeset -p foo somevariable
63 unset -n foo
64 typeset -p foo somevariable
66 unset bar
67 typeset -n foo=bar
68 typeset -p foo bar
69 unset foo
70 typeset -p foo bar
71 typeset -i foo
72 foo=4+4
73 typeset -p foo bar
74 echo "$foo"
76 unset foo
77 typeset -p foo bar