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

问题描述

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

cd $(Build.SourcesDirectory)

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

enter image description here

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

解决方法

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

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

名称为大写,而。替换为_。这是 自动插入到流程环境中。这里有一些 例子:

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...