
Tengo una secuencia de comandos que envía por correo electrónico el texto de un archivo de registro como cuerpo del correo electrónico. Ese archivo de registro tiene algunas líneas en blanco entre líneas de texto para facilitar la lectura.
Cuando uso la siguiente línea en el script, el correo electrónico se envía bien con el formato adecuado:
cat ${log}|mailx -s "Email Subject Line" ${i} < ${log}
Sin embargo, ahora quiero adjuntar varios archivos al correo electrónico. Modifiqué la línea a esto:
( echo `cat ${log}` ; uuencode ${file1} ${file1a} ; uuencode ${file2} ${file2a} ; uuencode ${file3} ${file3a} ) | mailx -m -s "Email Subject Line" ${i}
Tenga en cuenta que ese ${i}
es el destinatario del correo electrónico en ambas líneas.
Entonces, ahora el correo electrónico se envía bien con los archivos adjuntos, pero el cuerpo del mensaje es solo un gran bloque de texto sin saltos de línea ni nada.
¿No escribí correctamente la línea mailx? ¿Hay alguna manera de hacer que el formato persista en el cuerpo del mensaje?
Respuesta1
Las nuevas líneas sin comillas en las líneas de comando se tratan como espacios; por eso puedes decir cosas como
comando 1 && comando 2
Bueno, a veces las nuevas líneas sin comillas se tratan como punto y coma. Pero, cuando dices
echo `cat ${log}`
Todas las nuevas líneas del archivo de registro se convierten en espacios. Podrías arreglar esto diciendo
echo "`cat ${log}`"
pero ¿por qué no decir simplemente
cat ${log}
?