簡體   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