bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Difference between assignment via nameref vs `printf -v`?


From: lolilolicon
Subject: Difference between assignment via nameref vs `printf -v`?
Date: Sun, 31 Aug 2014 12:20:59 +0800

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

[Prev in Thread] Current Thread [Next in Thread]