
Eu tenho um script que envia por e-mail o texto de um arquivo de log como corpo do e-mail. Esse arquivo de log possui algumas linhas em branco entre as linhas de texto para facilitar a leitura.
Quando uso a seguinte linha no script, o e-mail é enviado corretamente com a formatação adequada:
cat ${log}|mailx -s "Email Subject Line" ${i} < ${log}
No entanto, agora quero anexar vários arquivos ao email. Modifiquei a linha para isto:
( echo `cat ${log}` ; uuencode ${file1} ${file1a} ; uuencode ${file2} ${file2a} ; uuencode ${file3} ${file3a} ) | mailx -m -s "Email Subject Line" ${i}
Observe que ${i}
é o destinatário do email em ambas as linhas.
Então, agora o e-mail envia bem com os anexos, mas o corpo da mensagem é apenas um grande bloco de texto sem quebras de linha nem nada.
Eu não escrevi a linha mailx corretamente? Existe uma maneira de fazer com que a formatação persista no corpo da mensagem?
Responder1
Novas linhas sem aspas nas linhas de comando são tratadas como espaços; é por isso que você pode dizer coisas como
comando 1 && comando 2
Bem, às vezes novas linhas não citadas são tratadas como ponto e vírgula. Mas, quando você diz
echo `cat ${log}`
todas as novas linhas no arquivo de log são transformadas em espaços. Você poderia consertar isso dizendo
echo "`cat ${log}`"
mas por que não apenas dizer
cat ${log}
?