bash循环将一些文本附加到文件并发送邮件

时间:2015-11-19 15:50:30

标签: bash email while-loop

我正在尝试写一个bash" while loop"从INPUT FILE获取输入,将其添加到MAIL TEMPLATE并向用户发送邮件。

当我尝试这个时,MAIL TEMPLATE被覆盖(出于显而易见的原因),并且脚本为第二个邮件发送的第二个邮件具有脚本为第一次迭代附加的详细信息。

如何修改我的脚本,以便对于每个输入,脚本获取详细信息,将它们添加到MAIL TEMPLATE并向用户发送邮件,原始MAIL TEMPLATE保持不变。

继承我的剧本

while read -r i
do
    cat >> MAILTEMPLATE.txt <<EOF
    #Some text that i need to append to the MAILTEMPLATE.txt file for the specific input
    EOF
    cat MAILTEMPLAT.txt|mail emp@org.com
done<inputfile

1 个答案:

答案 0 :(得分:1)

下,您可以在不需要临时文件的情况下执行此操作:

.1使用您的语法:

while read -r i
do
    cat MAILTEMPLATE.txt - <<-EOF | mail emp@org.com
        #Some text that i need to append to the MAILTEMPLATE.txt file for the specific input
        EOF
done <inputfile

.2使用函数

更好
buildMail() {
    cat MAILTEMPLATE.txt - <<-eof
        This is appended to mail body
        Where $1 is 1st arg of buildMail function
        $2 second and $@ is whole args list.
        eof
}

while read -r i ;do
    buildMail "$i" Other arg may be used... |
        mail emp@org.com
done< inputfile

小心使用制表仅缩进内联文字。它们将由<<-eof语法省略。