excess braces ignored: bug or feature ?

2012-02-17 Thread Mike Frysinger
can't tell if this is a bug or a feature.

FOO= BAR=bar
: ${FOO:=${BAR}
echo $FOO

i'd expect an error, or FOO to contain those excess braces.  instead, FOO is 
just "bar".
-mike


signature.asc
Description: This is a digitally signed message part.


Re: excess braces ignored: bug or feature ?

2012-02-17 Thread Greg Wooledge
On Fri, Feb 17, 2012 at 02:51:27PM -0500, Mike Frysinger wrote:
> can't tell if this is a bug or a feature.
> 
> FOO= BAR=bar
> : ${FOO:=${BAR}
> echo $FOO
> 
> i'd expect an error, or FOO to contain those excess braces.  instead, FOO is 
> just "bar".

imadev:~$ : ${FOO:=BAR}
imadev:~$ echo "$FOO"
BAR

It looks OK to me.  You've got an argument word which happens to contain
a substitution-with-side-effects as part of it.



Re: excess braces ignored: bug or feature ?

2012-02-17 Thread Bob Proulx
Greg Wooledge wrote:
> Mike Frysinger wrote:
> > can't tell if this is a bug or a feature.
> > 
> > FOO= BAR=bar
> > : ${FOO:=${BAR}
> > echo $FOO
> > 
> > i'd expect an error, or FOO to contain those excess braces.  instead, FOO 
> > is 
> > just "bar".
> 
> imadev:~$ : ${FOO:=BAR}
> imadev:~$ echo "$FOO"
> BAR
> 
> It looks OK to me.  You've got an argument word which happens to contain
> a substitution-with-side-effects as part of it.

Or slightly differently expressed it is this too:

  $ echo ${FOO:=BAR}
  BAR

  $ echo ${FOO:=BAR}
  BAR

  $ echo ${FOO:=${BAR}
  }}}

Seems reasonable to me.  In that context the bracket isn't special in
any way and is just another character in the string.  Just like this:

  $ echo 
  

Bob



Re: excess braces ignored: bug or feature ?

2012-02-17 Thread Dan Douglas
On Friday, February 17, 2012 02:51:27 PM Mike Frysinger wrote:
> can't tell if this is a bug or a feature.
> 
> FOO= BAR=bar
> 
> : ${FOO:=${BAR}
> 
> echo $FOO
> 
> i'd expect an error, or FOO to contain those excess braces.  instead, FOO is
> just "bar".
> -mike

My favorite is probably the parser ignoring any valid redirection syntax with 
the special command substitutions.

 ~ $ { echo "$({}

signature.asc
Description: This is a digitally signed message part.