Am Sat, 18 Aug 2012 19:55:17 +0100 schrieb Stephane Chazelas: > 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. >
I'm not sure if I got it right. Please correct me if I got it wrong: It is not generally a bug that Bash does filename expansion when assigning to array members in compound form. Only if explicit indices identify array members in a compound assignment there should be no filename expansion and it's a bug if Bash does so. Gundi