On Friday, August 24, 2012 09:38:44 AM you wrote:
> On 8/22/12 8:58 PM, Chet Ramey wrote:
> 
> > Then how about this: words inside a compound assignment statement that are
> > recognized as assignment statements ([1]=foo) are expanded like assignment
> > statements (no brace expansion, globbing, or word splitting).  Other words
> > undergo all the expansions.
That's pretty much what I had in mind. I assumed this was how Bash handled 
pathname expansion until seeing Stephane's exception.

> > 
> > That means you can do things like
> > 
> > [{0,1,2,3}]=foo
> > 
> > to set the first four elements to the same value
> 
> Or should these be marked as assignment statements after brace expansion,
> with the appropriate expansions performed?  It can be complicated to
> suppress brace expansion on the RHS after allowing it on the LHS.
> 
> Chet
> 

I can't think of any problems with either offhand. Even disabling brace 
expansion entirely for words recognized as assignments wouldn't be too bad.

But it could be a nice shortcut. Current methods I could think of using brace 
expansion are ugly:

 $ declare -a 'a+=(['{0..3}']=foo)' b[{0..3}]=foo c=( [{0..3}]=foo )
 $ declare -a "c=(${c[*]})"
 $ declare -p a b c
declare -a a='([0]="foo" [1]="foo" [2]="foo" [3]="foo")'
...

-- 
Dan Douglas

Reply via email to