On Wed, Jul 18, 2018 at 8:23 AM Greg Wooledge <wool...@eeg.ccf.org> wrote: > 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*
I think you are just seeing `var' have a value after the function call because it's still there from the global `declare' invocations. With bash 5.0 alpha, running just the version that's wrapped in a function, I don't get any value for `var': $ echo $BASH_VERSION 5.0.0(1)-alpha $ f() { declare -n ref=var; declare ref=(X); declare -p ref var; }; f declare -an ref=([0]="X") bash: declare: var: not found