2012-08-18 10:26:22 -0500, Dan Douglas: > This is a feature that all shells with this style of compound assignment have > in common. If no explicit subscripts are given, the text between the > parentheses is processed exactly as though it were arguments to a command > including brace expansion, word-splitting, and pathname expansion (and > consequently, quoting is just as important). This is an important feature > because it allows storing the results of a glob in an array easily. > > If a subscript is given explicitly, then the right-hand side of the > assignment > is treated exactly as an ordinary scalar assignment would be, including all > analagous behaviors for `+=' and the integer attribute. > > $ set -x; a=( [1]=* ) > + a=([1]=*) [...]
Nope: ~/1$ touch '[1]=x' ~/1$ bash -c 'a=( [1]=* ); echo "${a[@]}"' [1]=x ~/1$ bash -c 'a=( [1]=asd ); echo "${a[@]}"' asd That's a bug though. Just do a=("*") or a=('*') or a=(\*) -- Stephane