bug-bash
[Top][All Lists]
Advanced

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

Re: Clarification - Space removal in AE takes place before brace expansi


From: Greg Wooledge
Subject: Re: Clarification - Space removal in AE takes place before brace expansion
Date: Mon, 1 May 2017 10:00:09 -0400
User-agent: Mutt/1.4.2.3i

On Mon, May 01, 2017 at 03:49:39PM +0200, Florian Mayer wrote:
> However,
> $ (({1..10}'+' +0))
> Gives me "bash: ((: 1+ +0 2+ +0 3+ +0 4+ +0 5+ +0 6+ +0 7+ +0 8+ +0 9+ 
> +0 10+ +0: syntax"
> which is the same thing I'd get, when I whould've done {1..10}'+ +0'. Thus
> in this same arithmetic expansion context bash _does_ indeed do brace 
> expansion. But it does
> it after it deleted all whitespace inside the (( )) pair.
> 
> Why is that?

Ooh, you fixed your quotes.  Yay.

To answer your question, I would guess it has something to do with what
the bash parser considers a "word".  Brace expansion occurs when an
unquoted part of a word contains a legitimate brace-expansion substring
such as {a,b} or {a..c}.

In your case, it looks like the parser considers the entire inside of the
arithmetic command to be one "word", with a brace expansion inside it.
So, the brace expansion is performed on that word, and you get

((1+ +0 2+ +0 3+ +0 ...))

which you can confirm by re-running your command with set -x.



reply via email to

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