bug-bash
[Top][All Lists]
Advanced

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

RE: Re: Brace expansion ordering vs. parameter expansion


From: Tom (AST) Watson
Subject: RE: Re: Brace expansion ordering vs. parameter expansion
Date: Thu, 29 Apr 2021 16:59:25 +0000

All...

I've resigned to having it the way it is, but I note that the solution doesn't 
need the backslash escape:
[tsw@box6 ~]$ k=10
[tsw@box6 ~]$ eval echo {1..$k}
1 2 3 4 5 6 7 8 9 10

I'm finding out lots of things as I go along.  Need to understand the 
"features" as they show themselves.

Thanks for the input.  It has been helpful.

...Tom
-----Original Message-----
From: Chet Ramey <chet.ramey@case.edu> 
Sent: Thursday, April 29, 2021 07:46
To: Ilkka Virta <itvirta@gmail.com>
Cc: chet.ramey@case.edu; Tom (AST) Watson <thomas.3.watson@raytheon.com>; 
bug-bash@gnu.org
Subject: [External] Re: Brace expansion ordering vs. parameter expansion

On 4/29/21 8:12 AM, Ilkka Virta wrote:

>     Maybe, but it's never worked that way and was never intended to. You can
>     get what you need using eval:
> 
>     eval echo \{1..${i}}
> 
> 
> BTW, was there some background to why they're ordered like this? I'm 
> not sure if I have heard the story, and didn't see anything about it 
> in Greg's wiki or bash-hackers.org <http://bash-hackers.org> (of 
> course they tell the "what", but not the "why"). I didn't dig through all the 
> mailing lists, though.

Here's something I wrote in response to another message:

=====
OK. Bash has had brace expansion in essentially its current form since 1991, 
and we chose the implementation we did with an eye towards making the code 
something that other applications could just pick up and incorporate. Korn 
chose to perform brace expansion as a component of filename expansion 
(globbing), which happens after the other word expansions. I'm sure he thought 
it was better, but he chose not to be compatible with bash.
=====

I wrote 1991, but it was actually early 1989 when we (Brian and I) wrote the 
brace expansion code and put it in. We decided early on to make brace expansion 
independent of filename expansion, so you could have brace expansion even after 
performing `set -f'. There was thought towards making the brace expansion code 
reusable, in the sense that other GNU tools could take the code and easily add 
it to their argument processing. We were also reluctant to change the filename 
expansion code, which, at the time, we shared with other GNU applications 
including emacs.

So we made brace expansion a separate step, one that could be enabled and 
disabled independent of other expansions, with a defined input and output 
format, and made it happen before the POSIX word expansions. And here we are, 
thirty-plus years later.

--
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/

reply via email to

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