On Thu, Apr 17, 2008 at 4:21 PM, luiscolorado <[EMAIL PROTECTED]> wrote: > Hello, everybody... I'm suffering a huge problem with the "for" command > because it wants to parse a variable ignoring escape characters. > > For example, as you know, if I do something like this in bash: > > for i in sony apple "hewlett packard" > do > echo $i > done > > It will echo the following: > > sony > apple > hewlett packard > > However, I have a program that generates a list of files (let's say like the > previous one) that I want to use. This is what I get when some file names > have spaces: > > for i in `my-program` > do > echo $i > done > > It echoes the following: > > sony > apple > hewlett > packard > > > Did you notice how it broke "hewlett packard" in two separate strings? That > is, it uses the spaces to parse the file names!
Quotes or escapes in the output of the `` are input to the shell rather than shell syntax, so won't be interpreted. You just need to quote more. $ foo () { echo sony; echo apple; echo hewlett packard; } Now note the difference between: $ for w in "`foo`"; do echo $w; done sony apple hewlett packard and $ for w in `foo`; do echo "$w"; done sony apple hewlett packard and $ for w in "`foo`"; do echo "$w"; done sony apple hewlett packard Why the first one does that I'm not sure, but it's the last one you want. Dave