Assignment to a subscripted array variable behaves differently for
nameref vs `printf -v`, as shown below.

Assignment via nameref variable:

declare -a arr=()
func() {
  local -n ref=$1
  ref='nameref'
}
func 'arr[0]'
declare -p 'arr[0]' arr

--- output ---
declare -- arr[0]="nameref"
declare -a arr='()'

v.s.

Assignment via `printf -v`:

declare -a arr=()
func() {
  printf -v "$1" 'printf -v'
}
func 'arr[0]'
declare -p 'arr[0]' arr

--- output ---
ap.sh: line 10: declare: arr[0]: not found
declare -a arr='([0]="printf -v")'


Is subscripted array variable allowed as argument to `declare -p` in bash?
A quick test seems to suggest it's not -- consistent with the `printf
-v` behavior.

Is there a legitimate explanation for this?

Reply via email to