我是一个读取文件内容的简单程序,如果找到某些名称,我只需要通过电子邮件发送这些文字。电子邮件部分在每次迭代时发送单独的电子邮件,而不是将所有电子邮件组合在一起。
Chokeberry
Hawthorn
Loquat
Medlar
Pear
这是代码的一部分
file="/home/rkelly/Downloads/names.txt"
while IFS=, read -ra names; do
printf "%s\n" "${names[@]}"
for ((i=0; i < ${#fields[@]}; i++)); do
srvnm=`echo ${hostname:0:3} | tr [a-z] [A-Z]`
curdtm=$(date)
subject= "Hello"
echo "${fields[i]}" |mailx -s "$subject $curdtm" -a "$logpathfile" -r $srvnm $eml01
done
done < "$file"
我希望在一封电子邮件中获得结果,现在我收到5封不同的电子邮件。
答案 0 :(得分:0)
将mailx命令移到循环之外。
file="/home/rkelly/Downloads/names.txt"
srvnm=`echo ${hostname:0:3} | tr [a-z] [A-Z]`
curdtm=$(date)
subject="Hello"
content=""
while IFS=, read -ra names; do
printf "%s\n" "${names[@]}"
for ((i=0; i < ${#fields[@]}; i++)); do
content=$content'\n'${fields[i]}
done
done < "$file"
mailx -s "$subject $curdtm" -a "$logpathfile" -r $srvnm $eml01 $content