【问题标题】:How to use AzureDevOps predefined variables in Bash/Powershell scripts如何在 Bash/Powershell 脚本中使用 AzureDevOps 预定义变量
【发布时间】:2020-08-12 07:21:21
【问题描述】:

在 AzureDevOps 管道中,我有使用 Bash/Powershell 脚本编写的任务。
如果我选择使用 Inline 脚本,我可以直接使用预定义的变量,例如

cd $(Build.SourcesDirectory)

但是,如果我选择使用文件路径调用脚本,我不能直接在脚本文件中使用预定义变量。我必须将预定义变量传递给任务定义中的环境变量,如下例所示,这样我就可以在 script.sh 中使用 $SourceDirectoy,

有没有更好的方法在脚本中直接调用预定义变量?

【问题讨论】:

    标签: azure-devops azure-pipelines


    【解决方案1】:

    我相信这些变量也可用于脚本,但在脚本中引用它们的格式可能取决于脚本类型。参考documentation

    请注意,变量也可以通过 环境变量。使用这些环境的语法 变量取决于脚本语言。

    名字是大写的,.替换为_。这是 自动插入到进程环境中。这里有一些 例子:

    • 批处理脚本:%VARIABLE_NAME%
    • PowerShell 脚本:$env:VARIABLE_NAME
    • Bash 脚本:$VARIABLE_NAME

    包含文件路径的预定义变量被转换为 适当的样式(Windows 样式 C:\foo\ 与 Unix 样式 /foo/) 基于代理主机类型和外壳类型。如果您正在运行 bash Windows 上的脚本任务,您应该使用环境变量 访问这些变量而不是管道变量的方法 方法来确保您具有正确的文件路径样式。

    【讨论】:

    • 我刚刚尝试在 Windows 构建代理上运行 bash 脚本,但这仍然为我提供了 Windows 风格的路径:echo "${BUILD_ARTIFACTSTAGINGDIRECTORY}" - 与 echo "$(Build.ArtifactStagingDirectory)" 完全相同
    猜你喜欢
    • 1970-01-01
    • 2019-09-17
    • 2021-06-06
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多