On Tue, Apr 06, 2021 at 11:28:13PM +0900, Koichi Murase wrote: > 2) we > can distinguish the erasure of the element associated with key=@ > `unset -v a[$key]' from the entire array erasure `unset -v a[@]'.
As a counter-proposal, Chet could entirely remove the special meaning of unset 'a[@]' and introduce a new option to unset which would take its place. It appears -a is not yet used, so that would be a good pick. Under this proposal, unset 'a[@]' would only remove the single element whose key is '@', and unset -a a would remove all the elements of the array. I don't know whether any scripts actually use unset 'a[@]' to clear all the keys out of an array, but this change would obviously break backward compatibility if any such scripts exist. Therefore I only bring it up because this whole thread is about introducing new behaviors that break compatibility.