[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?
- Difference between assignment via nameref vs `printf -v`?,
lolilolicon <=