
У меня есть скрипт, который отправляет текст файла журнала в качестве тела письма. Этот файл журнала имеет несколько пустых строк между строками текста для удобства чтения.
Когда я использую следующую строку в скрипте, электронное письмо отправляется нормально с правильным форматированием:
cat ${log}|mailx -s "Email Subject Line" ${i} < ${log}
Однако теперь я хочу прикрепить к письму несколько файлов. Я изменил строку следующим образом:
( echo `cat ${log}` ; uuencode ${file1} ${file1a} ; uuencode ${file2} ${file2a} ; uuencode ${file3} ${file3a} ) | mailx -m -s "Email Subject Line" ${i}
Обратите внимание, что ${i}
в обеих строках указан получатель электронного письма.
Итак, теперь электронное письмо отправляется нормально с вложениями, но тело сообщения представляет собой просто один большой блок текста без переносов строк или чего-либо еще.
Я неправильно написал строку mailx? Есть ли способ сохранить форматирование в теле сообщения?
решение1
Незаключенные в кавычки символы новой строки в командной строке воспринимаются как пробелы; вот почему вы можете писать что-то вроде
команда 1 && команда 2
Ну, иногда некавычки в новых строках воспринимаются как точки с запятой. Но когда вы говорите
echo `cat ${log}`
все новые строки в файле журнала превращаются в пробелы. Вы можете исправить это, сказав
echo "`cat ${log}`"
но почему бы просто не сказать
cat ${log}
?