我正在尝试编写一个脚本,我需要使用该脚本发送多封电子邮件,并将文件作为附件发送给每封电子邮件。这是因为邮件附件大小限制。
我在目录中有zip文件,它们是file01.zip,file02.zip等,这些文件大约有4-5个。
-- File count is normally passed in
numFiles=5
fileCounter=1
datestr="`date +"%m/%d/%Y"`"
while [ $fileCounter -le $numFiles ]
do
SUBJECT_LINE="Weekly files ($fileCounter of $numFiles) - $datestr"
echo "[`date`] E-mailing file ($fileCounter of $numFiles) ... "
ZIPFILE="file0$fileCounter.zip"
echo $ZIPFILE
ls -ltr $ZIPFILE
mailx -a "$ZIPFILE" \
-r no-reply@host.com \
-s "$SUBJECT_LINE" \
$TO_LIST < /dev/null
echo "[`date`] Done"
fileCounter=$(( $fileCounter + 1 ))
done
我正试图在循环中调用mailx,如你所见。我也尝试了以下内容
for file in file0*.zip
do
...
done
当我使用echo打印出来时,我能看到ZIPFILE名称,但循环中的mailx命令返回以下内容,尽管文件在那里:
No such file or directory
我可以从控制台运行相同的mailx命令并发送电子邮件。我也可以发送一个没有循环的电子邮件,但在循环内这样做似乎会导致问题。我错过了什么吗?
答案 0 :(得分:0)
我可能在文件名($ ZIPFILE)中将一个或多个字符看不到,作为mailx的附件传入。我在排除故障时再次输入脚本的部分内容并修复了问题。但上面的剧本很好。