问题描述
在AzureDevOps管道中,我有用Bash / Powershell脚本编写的任务。
如果选择使用 Inline 脚本,则可以直接使用预定义变量,例如
cd $(Build.SourcesDirectory)
但是,如果我选择使用文件路径来调用脚本,则不能直接在脚本文件中使用预定义变量。我必须将预定义变量传递给任务定义中的环境变量,如下面的示例所示,因此可以在script.sh,
中使用$ SourceDirectoy
是否有更好的方法在脚本中调用预定义的变量直接?
解决方法
我相信变量也可用于脚本,但是在脚本中引用它们的格式可能取决于脚本类型。引用documentation。
请注意,变量也可以通过以下方式提供给脚本 环境变量。使用这些环境的语法 变量取决于脚本语言。
名称为大写,而。替换为_。这是 自动插入到流程环境中。这里有一些 例子:
- 批处理脚本:%VARIABLE_NAME%
- PowerShell脚本:$ env:VARIABLE_NAME
- bash脚本:$ VARIABLE_NAME
包含文件路径的预定义变量将转换为 适当的样式(Windows样式C:\ foo \与Unix样式/ foo /) 基于代理主机类型和外壳类型。如果您正在运行bash Windows上的脚本任务,应使用环境变量 访问这些变量而不是管道变量的方法 确保您具有正确的文件路径样式的方法。