我正在尝试将powershell命令的结果赋值给MY_VAR
环境变量。我已经尝试了几种方法,但我无法让变量获取操作的值。如果我将变量赋值如下,我得到的值就是字面上的命令。
ARG MY_ARG="VALUE"
ENV MY_VAR=[Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes($MY_ARG))
ENV MY_VAR2=$([Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes($MY_ARG)))
当我将这些值签入到容器中时,我得到的结果是:
Get-Childitem -Path Env:MY_VAR*
Name Value
---- -----
MY_VAR [Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes(VALUE))
MY_VAR2 $([Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes(VALUE)))
我的容器的基础是Windows Server Core,我的shell是powershell。
发布于 2020-03-30 17:41:59
参见this SO post,它包含了几个可以实现您想要的解决方案。
ENV将value视为简单的文本字符串。
更新:
根据answers and comments here的说法
1)向您显示环境配置文件位置的RUN $profile
。更熟悉这个文件。
2)尝试使用RUN $env.MY_VAR = [Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes($MY_ARG)) >> $profile
或其他方式将命令追加到文件中。我对powershell不够熟悉,因此请注意,您可能需要稍微修改一下该命令。(使用正确的命令进行注释,我将为下一位查看者修复它。)
3)尝试读取容器中的MY_VAR。如果一切都是正确的,那么Hoooray!,否则请在$profile中检查您是否实际获得了设置变量的正确字符串。
https://stackoverflow.com/questions/60925654
复制相似问题