Bitbucket Pipelines脚本cd命令报错:目录不存在问题排查
Bitbucket CI/CD流水线cd命令失败排查:目录存在却提示不存在
问题场景
我在基于Bitbucket搭建CI/CD流水线时遇到一个诡异问题:明明目录存在,但执行cd命令切换目录时,系统提示目录不存在。
流水线配置片段:
pipelines: branches: master: - step: name: update gitops image tag script: - git clone https://x-token-auth:$TOKEN@bitbucket.org/myuser/myrepo-gitops.git - VERSION="prod-0.1.${BITBUCKET_BUILD_NUMBER}" - sed -i "s/\([ ]*image:[ ]*mydockerregistry.com\/myapp-ui:\)\(.*\)/\1"${VERSION}"/" myrepo-gitops/myapp_ui/docker-compose.yml - cat myrepo-gitops/myapp_ui/docker-compose.yml - ls -d */ - cd ./myrepo–gitops/myapp_ui ...
流水线执行日志:
+ ls -d */ android/ myrepo-gitops/ ios/ public/ src/ tests/ bash: cd: ./myrepo–gitops/myapp_ui: No such file or directory cd ./myrepo–gitops/myapp_ui
核心原因
仔细对比目录名的字符:
git clone命令拉取的目录是myrepo-gitops(使用的是普通减号-,ASCII码0x2D)- 但
cd命令里写的是myrepo–gitops(使用的是长破折号–,ASCII码0x2013)
这两个字符视觉上几乎一样,但系统会识别成完全不同的字符串,自然找不到对应的目录。这种情况通常是复制粘贴时不小心带入了特殊字符,或者输入法切换时误输入了长破折号导致的。
解决方法
把cd命令里的长破折号替换成普通减号,修改后的命令如下:
cd ./myrepo-gitops/myapp_ui
或者直接从ls输出的目录名里复制粘贴,避免手动输入出错。
内容的提问来源于stack exchange,提问作者aleklass
相关产品推荐
相关产品推荐

