Thanks for replying.
I was expecting that in the second iteration of the loop, the
local var=var_123 command would make var a normal variable again with
value "var_123"
and then the local -n var=$var would make var again a nameref to var_123.
This seems
to be the behavior of Bash 4.3.
But anyway, it's easy to work around by introducing another variable rather
than redefining the nameref var:
set -x
var_123=123
f() {
while (( $# )); do
shift
local var=var_123
local -n var_ref=$var
done
}
f one two
On Thu, Oct 20, 2016 at 4:02 PM, Dan Douglas <[email protected]> wrote:
> Yes that was an intentional change to require valid identifiers. I can't
> say it will always be that way or that there won't at some point be a
> workaround. You can stiill use `${!param}' for now to refer to positional
> parameters as you always could, but as usual that isn't useful if you
> want to assign by reference.
>