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

drnojrws  于 2022-12-18  发布在  Linux
关注(0)|答案(1)|浏览(272)

我有2个文件在下面的路径结束与.xlsx扩展名。一个文件大于6 MB,另一个小于6 MB。
如果该文件小于6 MB,我需要发送一封电子邮件通知与文件的附件。否则,我需要发送一封电子邮件通知,说明该文件大于6 MB,并在指定的路径中可用。

#!/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:无此文件或目录
有人能指导如何解决这个问题吗?

fcg9iug3

fcg9iug31#

-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-这是一个供人们查看其文件系统的工具,脚本不需要它。

相关问题