如何传递当前值';p';在Azure管道中将${each p in parameters.param}}用于bash脚本?
我有一个管道模板,我正在调用它来循环一系列参数值,这些参数值需要拆分并分配给任务的两个变量——因为我不能在Azure管道中使用多维数组:( 问题是:如何获取循环呈现到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
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"