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

Bash判断文件路径是否包含指定子文件夹 匹配逻辑失效求助

Bash路径匹配逻辑错误修复说明

根因定位

  • 核心错误为变量名拼写错误:循环中定义的迭代变量是changed_file,但if判断条件里误写为changed_filed(末尾多了一个字母d),未定义的变量取值为空,无法匹配任何路径,所以所有判断都走到else分支返回invalid。

修正后可正常运行的代码

for changed_file in $changed_files; do
    echo "$changed_file"
    if [[ "$changed_file" == *'/jsonschema/'* ]];then
        echo "$changed_file"
    else
        echo 'invalid'
    fi
done

修正后可正常匹配到示例中的第二条路径,仅输出符合条件的文件,符合预期逻辑。

GitHub Action场景适配建议

  • 若changed_files是通过git命令获取的变更文件列表,建议用mapfile按行读取列表,避免路径含空格、特殊字符时遍历拆分错误:
    mapfile -t changed_files < <(git diff --name-only HEAD~1 HEAD)
    
  • 所有变量引用建议加双引号包裹,避免特殊字符导致的语法异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:39:04