bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bash does filename expansion when assigning to array member in compo


From: Stephane Chazelas
Subject: Re: bash does filename expansion when assigning to array member in compound form
Date: Sat, 18 Aug 2012 19:55:17 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]