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

Azure DevOps非YAML流水线Bash文件脚本无法识别自定义pipeline变量pat

问题原因

  1. 非YAML格式的经典Azure DevOps流水线,仅会对内联脚本内容执行预扫描替换:你使用文件路径执行脚本时,ADO不会提前解析.sh文件中的$(变量名)语法,会直接将文件内容提交给Bash执行。而$(PAT)在原生Bash语法中属于「命令替换」逻辑,会尝试执行名为PAT的命令取返回值,因此会抛出PAT: command not found报错。
  2. 流水线自定义变量不会默认注入到脚本的运行环境中:系统预置变量(如BUILD_REPOSITORY_NAME)是ADO默认注入到任务环境变量的,自定义变量需要手动配置映射才能被脚本读取,这也是你直接用$PAT无法读到值的原因。

解决方法

推荐使用环境变量映射方案,操作步骤如下:

  1. 打开你当前流水线的Bash任务配置页,找到「环境变量」配置项
  2. 在配置框中添加一行映射规则:PAT=$(pat),ADO会在启动脚本前自动将你定义的pat变量值注入为环境变量PAT
  3. 修改script.sh中的git clone命令为:
git clone https://username:$PAT@dev.azure.com/company/project/_git/repo-name

重新运行流水线即可正常执行。

如果不想修改任务配置,也可以选择将执行逻辑改为内联脚本,将变量作为参数传递给脚本文件:

  • 内联脚本内容配置为:
chmod +x script.sh
./script.sh $(pat)
  • 同时修改script.sh首行添加参数接收逻辑:
PAT=$1
# 后续保留原有逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:48:04