Re: command substitution and word splitting
S. Sevki Dincer jfcga...@gmail.com writes: i want to start building a project with ./configure --prefix=... $(myflags) where myflags is an executable text file on my path. myflags has the following in it: printf 'CFLAGS=-O2 -fomit-frame-pointer ' printf 'LDFLAGS=-Wl,-O2' now, when i do that ./configure complains for not recognizing -fomit-frame-pointer option, and actually word splitting of bash ruins what i wanna do. i want the word splitting of a command substitution to be careful about the quotes in the resulting expansion. is that possible? Use eval. eval ./configure --prefix=... $(myflags) Andreas. -- Andreas Schwab, SuSE Labs, sch...@suse.de SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 And now for something completely different.
echo $s{2,3}
What happened to 2,3? Poof, gone. $ s=a; echo $s{ $s{} $s} $s{1} $s{2,3} ${s}{4,5} a{ a{} a} a{1} a4 a5
Re: echo $s{2,3}
jida...@jidanni.org schrieb: What happened to 2,3? Poof, gone. $ s=a; echo $s{ $s{} $s} $s{1} $s{2,3} ${s}{4,5} a{ a{} a} a{1} a4 a5 As the manual says, brace expansion is performed before any other expansions. So $s{2,3} expands to $s2 $s3, and that expands to nothing if neither s2 nor s3 are set. Regards, Bernd -- Bernd Eggink http://sudrala.de
Re: command substitution and word splitting
On Sat, Dec 13, 2008 at 09:30:27AM +0100, Andreas Schwab wrote: S. Sevki Dincer jfcga...@gmail.com writes: i want to start building a project with ./configure --prefix=... $(myflags) where myflags is an executable text file on my path. myflags has the following in it: printf 'CFLAGS=-O2 -fomit-frame-pointer ' printf 'LDFLAGS=-Wl,-O2' now, when i do that ./configure complains for not recognizing -fomit-frame-pointer option, and actually word splitting of bash ruins what i wanna do. i want the word splitting of a command substitution to be careful about the quotes in the resulting expansion. is that possible? Use eval. eval ./configure --prefix=... $(myflags) [...] eval ./configure --prefix=... $(myflags) as you don't want word splitting nor filename generation in this case. You could also have done: printf 'CFLAGS=-O2 -fomit-frame-pointer|' printf 'LDFLAGS=-Wl,-O2' and then: IFS='|' set -f ./configure --prefix=... $(myflags) Or: cat EOF CFLAGS=-O2 -fomit-frame-pointer LDFLAGS=-Wl,-O2 EOF and then: IFS=' ' set -f ./configure --prefix=... $(myflags) -- Stéphane