You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

脚本问题排查:通过mailx发送最新时间戳的压缩xlsx附件

脚本错误排查与修正

现存问题点

  • 错误打包所有xlsx文件:当前zip命令使用*.xlsx通配符,会把目录下所有xlsx文件都打包,没有筛选出时间戳最新的文件。
  • 冗余的递归压缩与路径问题:已经通过cd进入目标目录,却仍使用完整路径指定文件;且-r参数是用于递归压缩目录的,打包单个文件完全不需要,反而会导致压缩包内包含多层目录结构。
  • 附件处理逻辑冗余且有风险:通过for循环遍历所有*.zip文件,可能会误加入其他无关的zip文件,而实际上我们只需要指定生成的report.zip即可。
  • 未使用的冗余变量:定义了dt变量但全程未调用,属于无用代码。

修正后的脚本

#!/bin/bash
# 切换到目标目录,切换失败则直接退出
cd /dev/abd_dev/alb/test/Scripts/albt/at || exit 1

# 筛选出时间戳最新的xlsx文件(按文件名逆序排序,取第一个)
latest_xlsx=$(ls abt_rpt_*.xlsx | sort -r | head -n 1)

# 仅压缩最新的xlsx文件,无需递归参数
zip report.zip "$latest_xlsx"

# 直接指定附件发送邮件
echo "Hi,
File Attached" | mailx -s "Test" -a report.zip test@gmail.com

关键修正说明

  • 筛选最新文件:用ls abt_rpt_*.xlsx匹配目标格式文件,sort -r按文件名逆序排列(时间戳最新的文件名会排在首位),head -n 1提取出最新文件。
  • 简化压缩操作:去掉-r参数,直接使用当前目录下的文件名打包,避免压缩包内出现多余的目录层级。
  • 简化邮件逻辑:直接通过-a report.zip指定附件,无需遍历所有zip文件,避免误加无关附件。
  • 增加容错机制:cd ... || exit 1确保目录切换失败时脚本立即终止,防止后续步骤在错误路径下执行。

内容的提问来源于stack exchange,提问作者Jenifer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:01:21