Shell Scripting:在循环中调用mailx

时间:2017-10-23 19:26:29

标签: shell scripting mailx

我正在尝试编写一个脚本,我需要使用该脚本发送多封电子邮件,并将文件作为附件发送给每封电子邮件。这是因为邮件附件大小限制。

我在目录中有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命令并发送电子邮件。我也可以发送一个没有循环的电子邮件,但在循环内这样做似乎会导致问题。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我可能在文件名($ ZIPFILE)中将一个或多个字符看不到,作为mailx的附件传入。我在排除故障时再次输入脚本的部分内容并修复了问题。但上面的剧本很好。