如何将Shell脚本输出转为表格形式并发送邮件
Shell脚本生成文件状态表格并发送邮件方案
脚本优化要点
- 支持批量检查多个文件,扩展性更强
- 用
printf生成对齐的表格格式,输出更规范 - 集成邮件发送功能,自动推送报告
完整脚本
#!/bin/bash # 配置要检查的文件路径列表,可按需添加 files=( "/saddwsgnas/radsfftor/coffe/COE_daily_File.xlsx" "/path/to/CareOneHMA.xlsx" ) # 生成表格表头及分隔线 printf "%-25s %-15s\n" "文件名" "修改日期" printf "%-25s %-15s\n" "-------------------------" "---------------" # 遍历检查每个文件,生成表格内容 for file in "${files[@]}"; do filename=$(basename "$file") if [ -e "$file" ]; then # 获取格式化的修改日期,直接输出月份缩写+日期 mod_date=$(stat -c "%b %d" "$file") printf "%-25s %-15s\n" "$filename" "$mod_date" else printf "%-25s %-15s\n" "$filename" "未找到" fi done > file_report.txt # 发送邮件,替换为实际收件人邮箱 mail -s "每日文件状态报告" your_email@example.com < file_report.txt # 清理临时文件 rm -f file_report.txt
关键细节说明
- 批量处理:通过数组
files批量管理要检查的文件,不用重复编写判断逻辑 - 表格对齐:
printf "%-Ns"格式控制列宽,确保每列内容左对齐且整齐 - 日期获取:用
stat命令替代ls,避免因ls输出格式变化导致的问题,%b %d直接输出月份缩写和日期 - 邮件发送:依赖系统邮件服务(如Postfix),需提前配置好邮件环境
最终输出表格示例
| 文件名 | 修改日期 |
|---|---|
| COE_daily_File.xlsx | Jun 11 |
| CareOneHMA.xlsx | 未找到 |
内容的提问来源于stack exchange,提问作者sai m
相关产品推荐
相关产品推荐

