如果我在本地运行此 powershell 代码:
$url = "refs/pull/5625/merge"
$SourceBranchFromBuild = $url.split('/')[-1]
$featureReleaseUrl = "http://$sourceBranchFromBuild.azurewebsites.net"
Write-Output $featureReleaseUrl
Run Code Online (Sandbox Code Playgroud)
输出是:
当我在 Azure Powershell 上运行此代码时:
$url = "refs/pull/5625/merge"
$SourceBranchFromBuild = $url.split('/')[-1]
Write-Host "##vso[task.setvariable variable=prSourceBranchName;]"$SourceBranchFromBuild
Run Code Online (Sandbox Code Playgroud)
然后在另一个 Azure Powershell 脚本中创建 URL:
$featureReleaseUrl = "http://$env:prSourceBranchName.azurewebsites.net"
Write-Output $featureReleaseUrl
Run Code Online (Sandbox Code Playgroud)
输出是
http://merge.azurewebsites.net
是什么导致了这个前导空格字符$env:prSourceBranchName?
Azure 没有添加任何内容 - 您的写入主机才是!
你的代码正在这样做:
PS> $x = "xxx"
PS> write-host "aaa"$x
aaa xxx
Run Code Online (Sandbox Code Playgroud)
但大概你想要
PS> $x = "xxx"
PS> write-host "aaa$x"
aaaxxx
Run Code Online (Sandbox Code Playgroud)
请注意两个示例中第二个引号的位置write-host。在第一个中,它位于$x变量名称之前。在第二个之后。
在你的问题中,它调用它(在变量名称之前加上引号):
Write-Host "##vso[task.setvariable variable=prSourceBranchName;]"$SourceBranchFromBuild
Run Code Online (Sandbox Code Playgroud)
这会将日志记录命令写入日志文件,Azure DevOps 将处理该命令并更新环境变量。
您可能希望它将以下内容写入日志文件:
##vso[task.setvariable variable=prSourceBranchName;]merge
Run Code Online (Sandbox Code Playgroud)
但它实际上是这样写的:
##vso[task.setvariable variable=prSourceBranchName;] merge
Run Code Online (Sandbox Code Playgroud)
尝试将代码切换为此(即变量名称后的第二个引号):
Write-Host "##vso[task.setvariable variable=prSourceBranchName;]$SourceBranchFromBuild"
Run Code Online (Sandbox Code Playgroud)
并且它应该省略 url 中分支名称前面的空格。
| 归档时间: |
|
| 查看次数: |
1438 次 |
| 最近记录: |