2017-04-12 3 views
0

私はBashスクリプトに次のコードを書いています。メールに本文を追加するにはどうすればよいですか? 例:本体:出力diff出力とメール本文をメールで送信

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

をやったことありますか? [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

あなたは、このようなS-ネイルやmailxのよう添付ファイル、ため-aを理解mailプログラムを持っていると仮定すると、

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 

あなたが避けるために、バッシュのプロセス置換を使用することができます一時ファイル

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

添付ファイルのファイル名は乱数になります。

0

これは、私はあなたがmail` `のバージョンは何がありますか

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

あなたはそれを好きなら、 '{echo 'Body here'; diff file1 file2;ここにボディをエコーし​​ます。 } | mail -s 'subject' 'address''はdiffを文字列としてBashにロードする必要がないので、より優れています。 (もちろん、 'echo'を 'cat << HEREDOC'に置き換えることもできます)。 – ephemient

関連する問題