This sounds ridiculously easy, and it is with other shells. But I can’t seem to figure out how to get echo to display newlines. For example –
cat myFile
shows the file as it actually exists, which is what I want –
this
is
my
file
whereas my script, which contains the following –
#!/bin/csh
set var = `cat myFile`
echo "$var"
removes all the newlines, which is not what I want –
this is my file
Thanks in advance.
The problem isn’t with the
echocommand, it’s with csh’s handling of backticks. When you executethe newlines from
myfileare never stored in$var; they’re converted to spaces. I can’t think of any way to force a csh variable to include newlines read from a file, though there might be a way to do it.sh and its derivatives do behave the way you want. For example:
The double quotes on the assignment cause the newlines (except for the last one) to be preserved.
echo $xreplaces the newlines with spaces, butecho "$x"preserves them.Your best bet is to do something other than trying to store the contents of a file in a variable. You said in a comment that you’re trying to send an e-mail with the contents of a log file. So feed the contents of the file directly to whatever mail command you’re using. I don’t have all the details, but it might look something like this:
Obligatory reference: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/