Blob Blame History Raw
# testing behavior of command substitution as one of expansions performed by
# array subscripting; should behave the same directly as when done through
# a nameref

x[0]=42
zero=0
f() { typeset -n foo="$1"; declare -p foo; echo "$foo"; }

f 'x[$zero]'

x[$(echo 0)]=4
declare -p x

f 'x[$(echo 0)]'

unset -f f
f()
{
	typeset -n foo="$1";

	echo "x[i=0$(echo comsub >&2)]"
	echo "${x[i=0$(echo comsub >&2)]}"
	echo "${!1}"
	echo "$foo"
}

f 'x[i=0$(echo comsub >&2)]'

unset -f f
unset x

# problems with unset and namerefs pointing to non-existent variables pointed
# out after bash-4.3 released

typeset -n foo=somevariable
foo=bar
unset foo		# unsets somevariable
typeset -p foo somevariable
echo foo = $foo

typeset -A foo		# should create array variable named somevariable
foo["jug"]="brown"

typeset -p foo somevariable
typeset -A foo='([jug]="brown" )'
typeset -p foo somevariable

unset foo
typeset -p foo somevariable
unset -n foo
typeset -p foo somevariable

unset bar
typeset -n foo=bar
typeset -p foo bar
unset foo
typeset -p foo bar
typeset -i foo
foo=4+4
typeset -p foo bar
echo "$foo"

unset foo
typeset -p foo bar