「以下は送信されたファイルのリストです」というメッセージとともに、一部のファイル名のリスト(findコマンドの結果)を電子メール本文に送信する必要があります。このメッセージを上記の検索結果とメッセージ本文にマージするにはどうすればよいですか?
前任者:
echo "Below are list of files transfered" | mail -s "$some_subject" $some_mail_id
find . -maxdepth 1 -type f -name $(echo ${FILE_ARR[@]}| sed 's/ / -o -name /g') | \
mail -s "$some_subject" $some_mail_id
上記のコマンドを個別に実行することはできますが、1つにまとめることはできません。
助けてください。ありがとうございます。
答え1
(
括弧を使用して複数のコマンドをサブシェルにグループ化し、サブシェル)
の出力をmail
.
たとえば、("below..."テキストの後にいくつかの追加の改行を含む):
( printf '%s\n\n\n' "Below are list of files transfered"
find . -maxdepth 1 -type f -name $(echo ${FILE_ARR[@]}| sed 's/ / -o -name /g')
) | mail -s "$some_subject" "$some_mail_id"
またはfindコマンドが必要ない場合(そしてそうでない場合):
( printf '%s\n\n\n' "Below are list of files transfered"
printf '%s\n' "${FILE_ARR[@]}"
) | mail -s "$some_subject" "$some_mail_id"
答え2
これは古いスレッドですが、複数行のメッセージを送信するための簡単な選択肢があります。興味深いことに、必要なコメント、コマンド、変数を追加できます。 「<<EOF」と「EOF」の間のすべての内容はメッセージの一部と見なされます。
mail -s "Subject" [email protected] <<EOF
Current date: $(date)
Here is the list of transfered files:
$(command 1; command 2 ; ... ; command n)
(This is an automated message. Bla bla bla...)
EOF