[Top][All Lists]

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

Re: Backslash missing in brace expansion

From: Eric Blake
Subject: Re: Backslash missing in brace expansion
Date: Fri, 6 Dec 2019 13:36:27 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2

On 12/5/19 10:53 PM, Martin Schulte wrote:

(2019-11-11) x86_64 GNU/Linux $ echo ${BASH_VERSINFO[@]}
4 4 12 1 release x86_64-pc-linux-gnu
$ set -x
$ echo {Z..a}
+ echo Z '[' '' ']' '^' _ '`' a
Z [  ] ^ _ ` a

It looks as if the backslash (between [ and ] in ASCII code) is
missing in brace expansion. The same behaviour seems to be found in
bash 5.0.

It's an unquoted backslash, which is removed by quote removal when the
words are expanded. Look at the extra space between `[' and `]'; that's
the null argument resulting from the unquoted backslash.

Yes - sure. But then I'm wondering why the unquoted backtick doesn't
start command substitution:

It may be version dependent:

$ echo ${BASH_VERSINFO[@]}
5 0 7 1 release x86_64-redhat-linux-gnu

$ echo b{Z..a}d
bash: bad substitution: no closing "`" in `d

Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

reply via email to

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