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

如何从指定路径反向递归查找BUILD.bazel文件并终止

修正后的Shell脚本实现

下面是完善后的脚本,可实现从指定路径反向递归查找BUILD.bazel的需求,找到目标文件或到达根目录src时立即终止:

apath="src/services/team"
root_dir="src"
bazel_cov_req=()

recursive_find_bazel_file_in_apath() {
    local current_path="$apath"
    local bbf="BUILD.bazel"
    
    while true; do
        # 检查当前路径是否存在目标文件
        if [ -f "${current_path}/${bbf}" ]; then
            bazel_cov_req+=(//"${current_path}")
            break
        fi
        
        # 到达根目录则终止查找
        if [ "${current_path}" = "${root_dir}" ]; then
            break
        fi
        
        # 获取父目录路径,无需cd操作
        current_path=$(dirname "${current_path}")
    done
}

# 执行查找
recursive_find_bazel_file_in_apath

# 可选:打印验证结果
echo "找到的BUILD.bazel路径:${bazel_cov_req[@]}"

关键改进说明:

  • 摒弃cd操作:用dirname直接解析父目录路径,不会改变脚本的工作目录,避免路径混乱
  • 清晰的终止逻辑:通过break分别处理"找到目标文件"和"到达根目录"两种终止场景,逻辑更直观
  • 局部变量隔离:函数内用local定义current_path,避免污染全局变量
  • 路径拼接严谨:确保文件路径与Bazel目标路径的拼接无语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:42:11