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. Сегодня я снова набрал части скрипта во время устранения неполадок, и это устранило проблему. Но приведенный выше сценарий хорош.