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

Re: bash expansion crap...



On Tue, Oct 02, 2007 at 12:48:04PM -0700, Mike Bird wrote:
> On Tuesday 02 October 2007 11:49, Andrew Sackville-West wrote:
> > Hey folks, help me out with this...please
> >
> > andrew@basement:~$ for i in {1..3}; do echo $i; done
> > 1
> > 2
> > 3
> > andrew@basement:~$ TEST=3; for i in {1..$TEST}; do echo $i; done
> > {1..3}
> >
> >
> > in the first example, its obvious. In the second, $TEST gets replaced
> > with 3, but then the {} doesn't get expanded. I'm sure I have to do
> > some kind of wacky $({[ type thing, but I'm not able to grok it. any
> > ideas?
> >
> > the purpose is to be able to easily update some loops in a script for
> > different numbers of object to iterate over. obvious, I guess.
> 
> From man bash:
> 
>        Brace expansion is performed before any other expansions, and any char‐
>        acters  special to other expansions are preserved in the result.  It is
>        strictly textual.  Bash does not apply any syntactic interpretation  to
>        the context of the expansion or the text between the braces.
> 
> This is not pretty but it works:
> 
>        TEST=3; for i in $(eval echo {1..$TEST}); do echo $i; done

okay, yeah. thanks. that's sure annoying.

A

Attachment: signature.asc
Description: Digital signature


Reply to: