Проблема не в команде echo
, а в том, что csh обрабатывает обратные пометки. Когда вы выполните
set var = `cat myFile`
переводы строк с myfile
никогда не сохраняются в $var
; они преобразованы в пробелы. Я не могу придумать, как заставить переменную csh включать переводы строки, прочитанные из файла, хотя может быть способ сделать это.
sh и его производные ведут себя так, как вы хотите. Например:
$ x="`printf 'foo\nbar'`"
$ echo $x
foo bar
$ echo "$x"
foo
bar
$
Двойные кавычки в присваивании приводят к сохранению символов новой строки (кроме последней). echo $x
заменяет символы новой строки пробелами, но echo "$x"
сохраняет их.
Лучше всего делать что-то кроме попыток сохранить содержимое файла в переменной. В комментарии вы сказали, что пытаетесь отправить электронное письмо с содержимым файла журнала. Поэтому передайте содержимое файла непосредственно любой почтовой команде, которую вы используете. У меня нет всех деталей, но это может выглядеть примерно так:
( echo this ; echo that ; echo the-other ; cat myFile ) | some-mail-command
Обязательный указатель: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/