繁体   English   中英

为什么 powershell env 可以在本地运行,但不能与 dockerfile 一起使用?

[英]Why does powershell env works locally but not with dockerfile?

所以我在本地机器上运行了这个命令。 出于显而易见的原因删除了链接。

scalar clone --full-clone https://$env:USERNAME:$env:PAT_TOKEN@<MY GIT REPO LINK HERE>

但是在 dockerfile 中运行它不起作用。 即使在构建过程中传入了 ARG。 是的,我已经通过打印出来检查过它们。

RUN scalar clone --full-clone https://$env:USERNAME:$env:PAT_TOKEN@<MY GIT REPO LINK HERE>

但是如果我只是在正确的位置添加一个反斜杠,它就可以工作......

RUN scalar clone --full-clone https://$env:USERNAME\:$env:PAT_TOKEN@<MY GIT REPO LINK HERE>

有任何想法吗?

我不认为它在本地工作,因为您似乎遇到了一个错误(从 PowerShell 7.0 开始) ,可以更简单地证明如下:

# Command based on *Windows* environment vars., but the bug affects Unix too.
PS> Write-Output $env:OS:$env:USERNAME@more
jdoe@more  # !! only the *2nd* variable value is output.

当两个$env:<name>引用直接与:连接时,错误就会$env:<name> (您在:之前插入的\\绕过了错误)。

解决方法是将变量名称(包括env:命名空间前缀)括在{...} ,这是 PowerShell 用于从(隐式)可扩展字符串中的相邻字符中消除变量名称歧义的机制:

# Workaround: enclose the variable name in {...}
PS> Write-Output ${env:OS}:$env:USERNAME@more
Windows_NT:jdoe@more  # OK.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM