我有一个Azure Devops构建yaml文件,其中包含以下任务:
- task: PowerShell@2
displayName: 'Set coverage variable'
inputs:
targetType: 'inline'
script: Write-Host "##vso[task.setvariable variable=coverage]Get-Content .\coverage\lcov-report\summary.txt"
我希望此任务将变量coverage
设置为summary.txt
内容的值。但是,在以下任务中访问变量时,我看到该变量实际上是字符串Get-Content .\coverage\lcov-report\summary.txt
。
文档中似乎没有关于如何实现此目标的示例。这仅仅是脚本的限制吗?我是否必须将Get-Content
命令设置为变量,然后访问该变量?
谢谢!
答案 0 :(得分:3)
请在$之后使用$()。
示例:
##vso[task.setvariable variable=coverage]$(Get-Content .\coverage\lcov-report\summary.txt)"
答案 1 :(得分:0)
实际上,已记录在案。但是在我们的官方文档中可能不太明显:)您可以找到相关文档here:
重要
包含文件路径的预定义变量将转换为适当的样式(Windows样式C:\ foo \与Unix样式/ foo /) 基于代理主机类型和外壳类型。如果您正在运行bash Windows上的脚本任务,您应该使用环境变量 访问这些变量而不是管道变量的方法 方法,以确保文件路径样式正确。
由于您使用的是管道变量,因此'Get-Content .\coverage\lcov-report\summary.txt'
作为字符串类型返回的值是预期的行为。
但是$()接受变量而不是字符串。使用$(Get-Content .\coverage\lcov-report\summary.txt)
此后,在下面的任务中,使用下面的简单方法读取值。
Write-Host No problem reading $env:coverage