On Sun, Aug 31, 2014 at 12:20 PM, lolilolicon <loliloli...@gmail.com> wrote: > 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='()'
It's a damn bug alright. Just curious though, shouldn't assignments to via nameref variables re-use the same code as `printf -v`? > > 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?