2017-04-12 247 views
0

我在我的Bash腳本中有以下代碼。我怎樣才能將正文添加到電子郵件中? 例如:身體:輸出電子郵件差異輸出和電子郵件正文

diff -q file1 file2 || diff file1 file2 | mail -s "subject" "[email protected]" 
+0

什麼版本'mail'你有嗎?有些(如[s-nail](https://www.sdaoden.eu/code.html))支持'-a'選項來附加文件。 – ephemient

+0

sendmail-8.14.4-9.el6_8.1.x86_64 – user3508766

+0

真的嗎?這不可能是'rpm -qf/usr/bin/mail'所說的,'sendmail'不提供那個二進制文件。 (這是MTA,不是MUA)。在CentOS上,你可能已經安裝了'mailx'。 – ephemient

回答

0

假設你有一個mail程序,瞭解-a用於連接文件,如S-指甲或mailx的,

if ! diff -q file1 file2; then 
    diff file1 file2 > something.diff 
    echo 'body' | mail -s 'subject' -a something.diff '[email protected]' 
    rm -f something.diff 
fi 

你可以使用bash的進程替換,以避免臨時文件

diff -q file1 file2 || echo 'body' | mail -s 'subject' -a <(diff file1 file2) '[email protected]' 

但附件的文件名只是一些隨機數。

0

這是我做過什麼

difference=` diff file1 file2 >/dev/null || diff file1 file2` 
    if [ -n "$difference" ]; then 
mail -s " subject " "address" <<EOF 
    Body here 

    $difference 

     Body here 

    EOF 
fi 
+0

如果你打算這樣做,那麼'{回聲'身體在這裏'; diff file1 file2;回聲'身體在這裏'; } | mail -s'subject''address''更好,因爲它不需要將diff作爲字符串加載到Bash中。 (當然你可以用'cat << HEREDOC'來代替'echo'。) – ephemient