Adding CR/LF
Warren Block
wblock at wonkity.com
Fri Sep 28 14:09:53 PDT 2007
On Fri, 28 Sep 2007, jhall at vandaliamo.net 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
More information about the freebsd-questions
mailing list