在Azure Devops中,如何在运行Shell脚本的“ Azure CLI任务v.2”中使用管道变量?

时间:2020-06-02 13:37:35

标签: bash azure azure-devops azure-pipelines azure-cli

我正在尝试使用Azure Devops中的Azure CLI和 bash 执行任务。我正在使用 Azure CLI任务v.2 ,并选择 shell 作为脚本类型,如下所示。 enter image description here 我想在bash脚本中使用管道变量。我在脚本中运行以下命令:

#!/bin/bash
az role assignment create --role "Lab Admin" --assignee $(ownerEmail) -g $(rgName)

我得到以下错误:

 line 2: ownerEmail: command not found
 line 2: rgName: command not found

我不明白。通常,我应该能够在bash脚本中使用azure cli。 有人有主意吗?

2 个答案:

答案 0 :(得分:3)

有两种方法可以读取bash脚本中的管道变量:

  1. (建议)直接将它们作为脚本中的环境变量读取。将Azure DevOps管道变量添加为环境变量,您的bash脚本可以访问它。因此,只需定义/设置管道变量,即可从bash脚本访问它们。即在您的脚本中将它们引用为$ OWNERNAME和$ RGNAME。
    请参阅> https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables#environment-variables

  2. 在bash脚本中引用直接参数。 Bash参数已编号,可以这样引用。例如对于您的aruments $ 1是字符串“ -labOwner” $ 2是ownerEmail管道变量中包含的值。
    请参阅> https://tecadmin.net/tutorial/bash-scripting/bash-command-arguments/

答案 1 :(得分:2)

变量作为环境变量传入。变量在Linux上都是大写且区分大小写。

因此,$OWNERNAME$RGNAME可能是您追求的值。

请参阅有关脚本中变量使用的部分:

有些任务根本不填充环境,这些任务有一个 environment 部分,您可以在其中手动输入环境变量。