On Mon, Apr 19, 2021 at 6:01 AM Chet Ramey <chet.ra...@case.edu> wrote: > > Yes, but if `unset' is defaulted to `assoc_expand_once' behavior while > > indirect expansions and namerefs aren't changed, users still need to > > do two different ways of quoting: « unset "a[$key]" » versus «on > > iref='a[$key]'; echo "${!iref}" » and « declare -n nref='a[$key]'; > > echo "$nref" ». > > I just don't see this as the same problem you do. Assigning a string value > to a variable is not the same thing as expanding a variable's value.
There would be if the referring function also deletes the parameter. unset "$iref" declare +n nref unset "$nref" > > Or another solution might be introducing special syntactic treatment > > of `unset' arguments: > > Nope, not going to go that way without much better reasons than I've seen > so far. There's less reason to choose a complicated solution that adds thinking overhead, adds inconsistencies and breaks scripts. Making unset skip default word expansion on tokens that pass valid_array_reference () is much simpler. -- konsolebox