如何在 Bash/Powershell 脚本中使用 AzureDevOps 预定义变量

Jim*_*Jim 7 azure-devops azure-pipelines

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

cd $(Build.SourcesDirectory)
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*att 10

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

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

名称是大写的,并且 . 被替换为 _。这会自动插入到流程环境中。这里有些例子:

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

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