首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Azure DevOps Yaml:从变量中获取来自Azure KeyVault任务的秘密变量

Azure DevOps Yaml:从变量中获取来自Azure KeyVault任务的秘密变量
EN

Stack Overflow用户
提问于 2021-01-09 22:51:32
回答 2查看 657关注 0票数 0

我想从我的KeyVault里获取一个秘密。变量名为secretVar。

获取秘密如下:$(secretVar)运行良好,但是我想从一个变量中检索它,如下所示:

我一直收到没有找到命令的消息,我不知道为什么这不能正常工作。

因此,我要提取的秘密的名称在一个bash变量中。对于这个问题,我简化了问题,但在我的实际用例中,我有一个bash For循环,它循环遍历秘密名称,在for循环中,我希望从具有相应秘密名称的KeyVault中提取适当的值,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
for secretname in secrets; do
  echo $($secretname) # This should contain the value of the secret but gives command not found
done

如果有人知道可能会发生什么,我们将不胜感激。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2021-01-10 02:57:42

看看你正在使用的语法。

代码语言:javascript
代码运行次数:0
运行
复制
variable=secretVar

您正在创建一个文字值为secretVar的环境变量

然后尝试使用$($variable)执行变量$variable的值。因此,它尝试运行命令secretVar,但该命令显然不存在,您会得到一条错误消息。

您要查找的语法是

代码语言:javascript
代码运行次数:0
运行
复制
variable=$(secretVar)

就像您在脚本的第一个echo命令中使用的一样。

如果不想将变量value作为命令运行,则语法应为$variable,而不是$($variable)

$variable是Bash环境变量的语法。

$(variable)是引用Azure DevOps变量的语法。

票数 0
EN

Stack Overflow用户

发布于 2021-01-11 16:56:03

首先,script关键字是命令行任务的快捷方式。该任务在Windows上使用cmd.exe运行脚本,在其他平台上使用Bash运行脚本。您需要注意您正在使用的代理。

如果要在脚本中设置变量,可以使用task.setvariable日志命令。例如:

代码语言:javascript
代码运行次数:0
运行
复制
- script: |
    echo $(secretvar)
    echo "##vso[task.setvariable variable=variable]$(secretvar)"
- script: |
    echo $(variable)

您可以在this document中找到更详细的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65644007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档