我遇到了问题杂种狗在我的 shell 脚本中过早退出 while 循环。已读 MAILTO我的函数循环发送文件只会处理(发送)第一个文件然后返回。但是,如果我从函数中注释掉“/usr/bin/mutt”,目录中的所有文件都会得到正确处理。
有人知道为什么会发生这种现象以及如何解决它吗?
#!/bin/sh
# sendReports.sh
# sendFiles function
sendFiles ()
{
cd $1
ls -1 *@* | while read MAILTO
do
echo "Emailing file: $MAILTO"
/usr/bin/mutt -s "Your file" -a $MAILTO -- $MAILTO
rm -f $MAILTO
done
}
# .... later in the life of this script ....
sendFiles /tmp/reports
# (end of file)
答案1
Mutt 在发送电子邮件后进入交互模式,这将使您脱离循环,并< /dev/null
在 mutt 请求的末尾添加
例子:
/usr/bin/mutt -s "Your file" -a $MAILTO -- $MAILTO < /dev/null