Piping cat to sendmail tidak menghormati baris baru

0

Saya memiliki skrip yang menjalankan beberapa pemeriksaan kewarasan, menampilkan hasilnya ke file yang kemudian digabungkan dan disalurkan ke sendmailfungsi sebagai berikut:

{ echo "$headers"; echo; cat health_check.log; } | sendmail "$recipients" ;

Jika saya catfile output adalah hasil dari pemeriksaan kewarasan pada sekitar 40 baris. Ketika saya menerima email, isi teks semuanya dalam satu baris dan akibatnya sulit dibaca.

Bagaimana cara memastikan jalur baru dihormati?

Nanor
sumber
Bisakah Anda memberikan contoh file health_check.logsehingga kami dapat mencoba mereproduksi masalah Anda?
sorontar
Mungkin program membaca surat Anda salah. Beberapa pembaca akan menganggap baris yang diakhiri dengan spasi harus digabungkan ke baris berikutnya, jadi pastikan data Anda tidak memiliki spasi spasi di setiap baris.
meuh

Jawaban:

0

hanya beberapa pemikiran (maaf, saya tidak dapat berkomentar):

Sudahkah Anda mencoba menyimpan $ header dan file cat ke dalam variabel baru, dan kemudian menggemakan variabel ini ke terminal untuk memverifikasi bahwa baris baru sudah ada? Jika Anda berhasil membangun var baru yang benar, maka Anda perlu menggali lebih dalam di bagian sendmail.

Sebagai contoh, ini menggema $ message dengan benar di layar saya ... tetapi saya tidak dapat mengujinya dengan sendmail.

data=$(cat b.txt)
headers=$(cat c.txt)
message=$(echo "$headers")
message+=$(echo "\n")
message+=$(echo "$data")
echo -e "message=\n$message"
sendmail "$recipients" <<<"$message"
George Vasiliou
sumber