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

KSH脚本语法错误求助:文件附件逻辑实现问题

KSH脚本语法错误修正及逻辑优化

原脚本存在语法解析错误,同时通配符匹配文件的判断逻辑有隐患,以下是具体修正方案:

核心问题点及修正

  • if语句中,]与then之间必须用分号;或换行分隔,KSH要求关键字then必须和条件表达式明确区分开
  • for循环里,循环列表与do之间同样需要分号;或换行分隔,否则会触发语法报错
  • 用[ -f ]判断带通配符的文件时,若匹配到多个文件会因参数过多报错,改用compgen -G检查是否存在匹配文件更可靠

修正后的完整脚本

# 检查当前目录是否存在当日目标文件
if compgen -G "${CLAIM_FILE_PREFIX}"*$(date +"%Y%m%d")*.html > /dev/null; then
  for FILE in "${CLAIM_FILE_PREFIX}"*$(date +"%Y%m%d")*.html; do
    ATTACHMENT_ARGS="$ATTACHMENT_ARGS $FILE"
    echo "$ATTACHMENT_ARGS"
  done
else
  # 切换至归档目录,若切换失败直接退出避免后续错误
  cd "$ARCHIVE_DIR" || exit 1
  for FILE in "${CLAIM_FILE_PREFIX}"*.html; do
    ATTACHMENT_ARGS="$ATTACHMENT_ARGS $FILE"
    echo "$ATTACHMENT_ARGS"
  done
fi

额外优化说明

  • 给ARCHIVE_DIR变量添加双引号,避免目录名含空格时出现异常
  • 循环列表中的变量也添加双引号,兼容文件名包含空格的场景
  • 增加cd命令失败后的退出逻辑,防止后续在错误目录执行操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:35:57