On Tue, Jul 17, 2018 at 05:47:20PM -0400, Grisha Levit wrote: > At global scope this works as expected: > > $ declare -n ref=var; declare -a ref=(X); declare -p ref var > declare -n ref="var" > declare -a var=([0]="X") > > But in a function, we end up with the nameref variable having both the > `a' and `n' attributes and nothing in the target: > > $ f() { declare -n ref=var; declare ref=(X); declare -p ref var; }; f > declare -an ref=([0]="X") > -bash: declare: var: not found
FYI that one is already fixed in 5.0-alpha: wooledg:~$ declare -n ref=var; declare -a ref=(X); declare -p ref var declare -n ref="var" declare -a var=([0]="X") wooledg:~$ f() { declare -n ref=var; declare ref=(X); declare -p ref var; }; f declare -an ref=([0]="X") declare -a var=([0]="X") Or at least partly fixed. *shrug*