我正在尝试写一个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
答案 0 :(得分:1)
在bash下,您可以在不需要临时文件的情况下执行此操作:
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
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
语法省略。