On Fri, 28 Sep 2007, [EMAIL PROTECTED] wrote:

I know this should be easy, but I cannot get it to work right.  Basically,
I have a list of items, and I need to place each one on a separate line.

Here is the script I am using.
#!/bin/sh
FILENAMES="test1 test2 test3"
FILELIST=""
for filename in ${FILENAMES}
do
       FILELIST="${FILELIST}${filename}"$'\n\r'
       echo ${FILELIST}
done

And, here is the output I am getting.
test1$\n\r
test1$\n\rtest2$\n\r
test1$\n\rtest2$\n\rtest3$\n\r

The output I would like to see is:
test1
test2
test3

It took me a bit to realize that what you're trying to do is go from a variable with a space-separated list of filenames to a variable with a newline-separated list.

If you don't really need that second variable but just want to show those names on the screen, just echo ${filename} in the loop. echo appends a linefeed. Or use printf, which can understand standard character escapes.

If you really want a new variable, echo the FILENAMES variable into tr to replace spaces with newlines. (\r is not needed.)

String manipulation in sh is painful at best. Any of the scripting languages are better at this.

-Warren Block * Rapid City, South Dakota USA
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to