Tatavarty Kalyan schrieb am 07.09.2006 um 14:20:43 (+0800):
> On 9/6/06, Chris F.A. Johnson <[EMAIL PROTECTED]> wrote:
> >
> >On 2006-09-06, Andreas Schwab wrote:
> >> [EMAIL PROTECTED] (Paul Jarc) writes:
> >>
> >>> Mike Frysinger <[EMAIL PROTECTED]> wrote:
> >>>> this little bit of code doesnt work right:
> >>>> foo() { echo "${1:-a{b,c}}" ; }
> >
> >  The first '}' is interpreted as the end of the parameter expansion.

It depends on the number of parameters, if the first or second brace is
taken. So this is very likely a Bug. ;)

That means in the case
        foo a
the first brace is taken.
And in the case
        foo
the second one does the termination.

> >  Quote them, and they do expand:
> >
> >$ foo() { echo "${1:-"a{b,c}"}" ; }
> >$ foo
> >ab ac
> >
> >  However, there is a problem:
> >
> >$ foo 1
> >1 1
> >
> >  Where is the second '1' coming from?
> 
> It seems
> 
> foo() { echo "${1:-"a{b,c}"}" ; } expands to
> 
> foo() { echo ${1:-ab} ${1:-ac} ; }

Not exactly, it is acting like:

foo() { echo "${1:-ab}" "${1:-ac}" ; }

To check the first assumption, that there are two parameters to echo, use the
call without any parameters to foo:

        $ foo
        ab ac
        $ 

The show the second, apply a string with spaces:

        $ foo() { echo "${1:-"a{b,c}"}" ; }
        $ foo "            x            "
                    x                         x            
        $ 



It is because the string
        a{b,c}
is outside of the quotes. So the brace expansion comes first and duplicates
the arguments to the echo call.

Alexander Elgert


_______________________________________________
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash

Reply via email to