如何传递当前值';p';在Azure管道中将${each p in parameters.param}}用于bash脚本?

如何传递当前值';p';在Azure管道中将${each p in parameters.param}}用于bash脚本?,bash,azure-devops,azure-pipelines,Bash,Azure Devops,Azure Pipelines,我有一个管道模板,我正在调用它来循环一系列参数值,这些参数值需要拆分并分配给任务的两个变量——因为我不能在Azure管道中使用多维数组:( 问题是:如何获取循环呈现到bash中的当前值,以便使用它执行操作 例如: parameters: - name: NameAndID type: object default: [] - name: jobsToRun type: string default: '' jobs: - job: DoTheThing displayNa

我有一个管道模板,我正在调用它来循环一系列参数值,这些参数值需要拆分并分配给任务的两个变量——因为我不能在Azure管道中使用多维数组:(

问题是:如何获取循环呈现到bash中的当前值,以便使用它执行操作

例如:

parameters:
- name: NameAndID
  type: object
  default: []
- name: jobsToRun
  type: string
  default: ''


jobs:
- job: DoTheThing
  displayName: "Update with val A and val B"
  steps:
    - ${{ each p in parameters.NameAndID }}:
      ??  << assign Bash accessible variable 'NAME_ID' to ${{ p }} >> ??
      - bash: 
          AF=$NAME_ID | cut -d '~' -f1)
          echo "##vso[task.setvariable variable=AF_NAME]$AF"
          PROJ=$NAME_ID | cut -d '~' -f2)
          echo "##vso[task.setvariable variable=PROJ_NUM]$PROJ" 
对于每个实例,脚本都应该创建变量

Loop 1
  $AF_NAME = A
  $PROJ_NUM = 1
Loop 2
  $AF_NAME = B
  $PROJ_NUM = 2
Loop 3
  $AF_NAME = C
  $PROJ_NUM = 3
等等。。。 所以我想不出的步骤是 > 如何将新值${p}分配给bash每次循环发生时都可以读取的变量

另外,我对这一点非常了解,所以请具体说明。:)

短暂性脑缺血发作

弗雷米什

如何获取循环呈现到bash中的当前值以执行操作

可以在bash中使用以下脚本:

NAME_ID=${{ p }}
然后变量
NAME\u ID
将具有当前循环中的参数值

以下是我的测试脚本:

trigger: none

pool:
  vmImage: ubuntu-latest

parameters:
- name: NameAndID
  type: object
  default:
  - A~1
  - B~2
  - C~3


jobs:
- job: DoTheThing
  displayName: "Update with val A and val B"
  steps:
    - ${{ each p in parameters.NameAndID }}:
      - bash: |
          NAME_ID=${{ p }}
          AF=$( echo "$NAME_ID" | cut '-d~' "-f1" )
          PROJ=$( echo "$NAME_ID" | cut '-d~' "-f2" )

          echo "$NAME_ID"
          echo "$AF"
          echo "$PROJ"
它工作得非常完美:


真管用!非常感谢。接下来,为什么
cut'-d~“-f1”
part上的单引号和双引号?@Freymish这些都不是必需的,您可以使用您的cut命令来代替!)我不熟悉bash,直接在教程中使用这些命令。
trigger: none

pool:
  vmImage: ubuntu-latest

parameters:
- name: NameAndID
  type: object
  default:
  - A~1
  - B~2
  - C~3


jobs:
- job: DoTheThing
  displayName: "Update with val A and val B"
  steps:
    - ${{ each p in parameters.NameAndID }}:
      - bash: |
          NAME_ID=${{ p }}
          AF=$( echo "$NAME_ID" | cut '-d~' "-f1" )
          PROJ=$( echo "$NAME_ID" | cut '-d~' "-f2" )

          echo "$NAME_ID"
          echo "$AF"
          echo "$PROJ"