我正在尝试从我的 KeyVault 中获取 secret 。 变量名称是secretVar。
像这样获取 secret :$(secretVar)工作正常,但是我想从这样的变量中检索它:
我一直收到找不到命令的消息,我不知道为什么这不起作用。
所以我想要提取的 secret 名称位于 bash 变量内。对于这个问题,我已经简化了问题,但在我的实际用例中,我有一个 bash for 循环,它循环访问 secret 名称,在 for 循环内,我想从 KeyVault 中提取适当的值,并使用相应的 secret 名称,如下所示:
for secretname in secrets; do
echo $($secretname) # This should contain the value of the secret but gives command not found
done
如果有人知道会发生什么,我们非常感谢任何帮助。
提前致谢!
最佳答案
查看您正在使用的语法。
variable=secretVar
您正在使用文字值 secretVar
创建一个环境变量
然后您尝试使用 $($variable)
执行变量 $variable
的值。因此它尝试运行命令 secretVar
,该命令显然不存在,并且您会收到一条错误消息。
您正在寻找的语法是
variable=$(secretVar)
就像您在脚本中的第一个 echo
命令中使用的那样。
如果您不想将变量值作为命令运行,则语法为 $variable
,而不是 $($variable)
$variable
是 Bash 环境变量的语法。
$(variable)
是引用 Azure DevOps 变量的语法。
关于azure - 从变量中读取 Azure Key Vault 任务中的 secret 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65644007/