On Wed, Apr 26, 2017 at 1:13 PM, Florian Mayer <mayerflor...@me.com> wrote:

> $ echo $BASH_VERSION
> 4.4.12(1)-release
> $ echo $BASH_VERSION{nobraceexpansion}
> 4.4.12(1)-release{nobraceexpansion}
> $ echo ${BASH_VERSION}{brace,expansion}
> 4.4.12(1)-releasebrace 4.4.12(1)-releaseexpansion
> $ echo $BASH_VERSION{brace,expansion}
> => no output. Unexpected
> $ echo $BASH_VERSIONfoo
> => no output as expected
>
> Why does
> $ echo $BASH_VERSION{brace,expansion}
> produce no output?
>
> it's because brace expansion occurs before parameter expansion
so first
  echo $BASH_VERSION{brace,expansion}
is expanded to
  echo $BASH_VERSIONbrace $BASH_VERSIONexpansion
and these 2 variables are not set.

you can verify with:
$ BASH_VERSIONbrace=foo BASH_VERSIONexpansion=bar; echo
$BASH_VERSION{brace,expansion}
foo bar

Reply via email to