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

Я могу видеть имена ZIPFILE, когда я распечатываю их с помощью echo, но команда mailx в цикле возвращает следующее, хотя файлы там есть:

No such file or directory

Я могу запустить ту же команду mailx из консоли и отправить письмо. Я также могу послать одно электронное письмо без цикла, но, похоже, это делает проблему внутри цикла. Я что-то пропустил?

1 ответ

Вероятно, у меня был один или несколько символов, невидимых глазу в имени файла ($ZIPFILE), которое передается в качестве вложения в mailx. Сегодня я снова набрал части скрипта во время устранения неполадок, и это устранило проблему. Но приведенный выше сценарий хорош.

Другие вопросы по тегам