我想从我的KeyVault里获取一个秘密。变量名为secretVar。
获取秘密如下:$(secretVar)运行良好,但是我想从一个变量中检索它,如下所示:
我一直收到没有找到命令的消息,我不知道为什么这不能正常工作。
因此,我要提取的秘密的名称在一个bash变量中。对于这个问题,我简化了问题,但在我的实际用例中,我有一个bash For循环,它循环遍历秘密名称,在for循环中,我希望从具有相应秘密名称的KeyVault中提取适当的值,如下所示:
for secretname in secrets; do
echo $($secretname) # This should contain the value of the secret but gives command not found
done
如果有人知道可能会发生什么,我们将不胜感激。
提前感谢!
发布于 2021-01-10 02:57:42
看看你正在使用的语法。
variable=secretVar
您正在创建一个文字值为secretVar
的环境变量
然后尝试使用$($variable)
执行变量$variable
的值。因此,它尝试运行命令secretVar
,但该命令显然不存在,您会得到一条错误消息。
您要查找的语法是
variable=$(secretVar)
就像您在脚本的第一个echo
命令中使用的一样。
如果不想将变量value作为命令运行,则语法应为$variable
,而不是$($variable)
$variable
是Bash环境变量的语法。
$(variable)
是引用Azure DevOps变量的语法。
发布于 2021-01-11 16:56:03
首先,script关键字是命令行任务的快捷方式。该任务在Windows上使用cmd.exe运行脚本,在其他平台上使用Bash运行脚本。您需要注意您正在使用的代理。
如果要在脚本中设置变量,可以使用task.setvariable日志命令。例如:
- script: |
echo $(secretvar)
echo "##vso[task.setvariable variable=variable]$(secretvar)"
- script: |
echo $(variable)
您可以在this document中找到更详细的信息。
https://stackoverflow.com/questions/65644007
复制相似问题