[英]-split ' ' that works locally in Powershell does not work in a Azure pipeline Powershell task
[英]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.