declare -ai a a[0]=4 declare -n b='a[0]' b+=1 ; declare -p a declare b+=1 ; declare -p a unset a b unset -n b ###### declare -ai a=(1) declare -in b="a[0]" declare -p a b b+=1 ; declare -p a b b+=1 ; declare -p a b b+=0 ; declare -p a b unset a b ##### declare -ai a=(1) declare -n b="1" declare -p a declare -np b unset a ; unset -n b ##### declare -ai a=('4'); declare -n b='a[0]'; declare -ni b; # this should maybe not be allowed, but it is for now declare -p a b b+=2; declare -p a b unset a ; unset -n b ##### f() { local -a a=('' 'foo'); local -n b=a[1]; echo $b; b+=\ bar; echo $b; declare -p a b; } f declare -a a=('' 'foo'); declare -n b=a[1]; echo $b; b+=\ bar; echo $b; declare -p a b unset a ; unset -n b unset -f f f() { local -ai a=(0 12); local -n b=a[1]; echo $b; b+=4; echo $b; declare -p a; } f declare -ai a=(0 12); declare -n b=a[1]; echo $b; b+=4; echo $b; declare -p a unset a ; unset -n b