在bash脚本中使用mailx命令附加文件



我在下面的路径中有两个以.xlsx扩展名结尾的文件。一个大于6mb,另一个小于6mb。

如果文件小于6mb,我需要发送邮件通知,并附上文件的附件。否则我需要发送电子邮件通知说明文件大于6mb,可在指定的路径..

#!/bin/bash
cd /opt/alb_test/alb/albt1/Source/alb/al/conversion/scr
file= ls *.xlsx -l
#for line in *.xls
min=6
actsize=$(du -m "$file" | cut -f1)
if [ $actsize -gt $min]; then
echo "size is over $min MB and the file is available in specified path -- Need to send this content via email alone"
else
echo "size is under $min MB, sending attachment -- Need to send the attachment"
echo | mailx -a ls *.xlsx -l test@testmail.com
fi

当我运行上面的脚本时,它说-gt:一元操作符期望&ls:没有这样的文件或目录

谁能指导如何解决这个问题?

-a参数只能接受一个文件名,因此您必须为要附加的每个文件重复它。您可以在数组中构建附件列表,方法是遍历所有xlsx文件,如下所示:

min=6
attachments=()
for file in *.xlsx ; do
[[ -f "${file}" ]] || continue # handles case where no xlsx files exist
if [[ $( du -m "${file}" | cut -f1 ) -le $min ]] ; then
attachments+=( "-a" "${file}" )
fi
done
mailx "${attachments[@]}" -l test@testmail.com

你不需要使用ls-这是一个工具,为人类查看他们的文件系统,脚本不需要它。

相关内容

  • 没有找到相关文章

最新更新