Azure Pipeline设置版本变量失败,调用时提示命令未找到
解决Azure Pipeline中Bash任务引用变量报错的问题
问题原因
你遇到的command not found错误,是因为在Bash脚本中直接使用$(ModuleVersion)这种语法时,Bash会将其解析为命令替换(尝试执行名为ModuleVersion的命令),而不是引用Azure Pipeline的管道变量。同样,$(GetModuleVersion.ModuleVersion)的写法也不符合Bash任务中引用步骤输出变量的正确格式。
修正方案
在Azure Pipeline的Bash任务中,引用管道变量或步骤输出变量需要使用正确的语法:
1. 引用全局管道变量
使用Azure Pipeline的表达式语法${{ variables.ModuleVersion }},或者利用Azure自动转换的环境变量(Linux/macOS下变量名会转为大写+下划线形式,即$MODULEVERSION)。
2. 引用步骤输出变量
步骤输出变量需要通过steps.步骤名.outputs.变量名的表达式来引用,即${{ steps.GetModuleVersion.outputs.ModuleVersion }}。
修正后的检查步骤代码
- task: Bash@3 displayName: Check module version inputs: targetType: 'inline' script: | # 用管道表达式引用全局变量 echo "${{ variables.ModuleVersion }}" # 用环境变量引用全局变量(Linux下自动转大写下划线) echo "$MODULEVERSION" # 引用步骤输出变量 echo "${{ steps.GetModuleVersion.outputs.ModuleVersion }}"
额外说明
你在本地Bash中测试的是本地变量MODVER,这和Azure Pipeline的管道变量不是同一个概念,所以本地能正常运行但管道中出错。另外,确保Get module version步骤中MODVER变量确实被正确赋值(可以通过该步骤的echo $MODVER输出来验证)。
内容的提问来源于stack exchange,提问作者Shirofuji
相关产品推荐
相关产品推荐

