On 2/4/15, konsolebox <konsole...@gmail.com> wrote: > Logically that should only unset the elements of an array and not the > array variable > itself since '*' or '@' is more of a wildcard that represents the > indices. However, bash > does otherwise: > > #define ALL_ELEMENT_SUB(c) ((c) == '@' || (c) == '*') > > ... > > if (ALL_ELEMENT_SUB (sub[0]) && sub[1] == 0) // If substring is > just '@' or '*' > { > unbind_variable (var->name); // It just removes it. > return (0); > } > > Bash version is 4.3.33. >
So, this is completely intended. May I ask what's the rationale behind this design choice? I find it very counterintuitive.