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

无法遍历目录文件:glob路径未展开导致文件名识别异常

解决办法

问题出在shell环境不支持bash特性或脚本执行方式错误,导致~/*.yaml未被正确展开为匹配的文件路径,反而被当作字面文件名处理。以下是具体修复方案:

  • 给脚本添加正确的shebang开头:
    在脚本第一行加入#!/bin/bash,确保系统用bash执行脚本,这样~的通配展开、nullglob这类bash专属特性才能生效。修改后的脚本示例:

    #!/bin/bash
    shopt -s nullglob
    for f in ~/*.yaml; do
        echo "$f"
        some_commands "$f"
    done
    
  • 强制用bash运行脚本:
    如果之前是通过sh your_script.sh执行脚本,改成bash your_script.sh,直接指定用bash环境运行。

  • 替换~为$HOME(兼容更多shell):
    若需要脚本在非bash的POSIX兼容shell中也能运行,可把~换成$HOME,它在多数shell里都能正确展开为用户主目录:

    for f in "$HOME"/*.yaml; do
        echo "$f"
        some_commands "$f"
    done
    

补充说明:nullglob仅在bash环境下有效,它的作用是当没有匹配到任何yaml文件时,让~/*.yaml展开为空,避免循环因不存在的文件名报错;若未开启该选项,目录无yaml文件时,循环会把~/*.yaml当作一个不存在的文件名处理,这也是你之前报错的核心原因之一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:19:53