【发布时间】:2022-12-16 09:35:59
【问题描述】:
我在以下路径中有 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: unary operator expected & ls: No such file or directory
谁能指导如何解决这个问题?
【问题讨论】:
-
file= ls *.xlsx -l你测试了吗? shellcheck.net -
它列出了 2 个以 .xlsx 扩展名结尾的文件。如果只有一个文件,则脚本运行良好。
-
它与问题没有直接关系,但是这个脚本有几个语法错误,shellcheck 可以帮助您解决。您应该将它粘贴到那里并尝试修复它的发现。
-
例如:
unary operator expected是因为$actsize可能是空的,因为$file是空的。file= ls *.xlsx -l没有给file分配任何东西,它只是运行ls命令并在终端上显示输出。