Azure DevOps管道Bash脚本中通过变量名字符串获取变量值
在Bash脚本中通过变量名字符串获取变量值的解决方案
针对你在Azure DevOps管道Bash脚本里遇到的问题,以下是两种直接可行的实现方式:
方法1:使用Bash间接引用语法
这是Bash原生支持的安全写法,直接通过${!变量名}的格式就能通过变量名字符串获取对应值:
PartAPartB="This is my text" VarAB="PartAPartB" VARNAME="$VarAB" # 正确获取变量值 echo "${!VARNAME}" # 输出:This is my text
方法2:使用eval命令(需注意安全风险)
如果你的场景中变量名是完全可控的(无恶意内容),也可以用eval命令实现,但要谨慎使用,避免注入风险:
PartAPartB="This is my text" VarAB="PartAPartB" VARNAME="$VarAB" # 通过eval解析变量引用 eval echo "\$$VARNAME" # 输出:This is my text
额外提示
如果是在Azure DevOps不同管道任务之间传递动态变量,除了脚本内的引用,还需要在生成变量的任务中执行echo "##vso[task.setvariable variable=变量名;]变量值",将变量设置为管道级变量,后续任务才能直接引用。
内容的提问来源于stack exchange,提问作者DevUser
相关产品推荐
相关产品推荐

