在Ansible中使用索引遍历两个列表



我对编程语言有很好的了解,但有些东西我无法使用Ansible过滤器和YAML语法。基本上,我想迭代数组/列表,并对每个元素进行比较,就像C语言中的一样

for (i=0;i<a;i++) {
for (j=0;j<b;j++) {
if (array1[i]==array2[j]) {
....     
}
}
}

在我的例子中,我试图逐一比较两个列表的每个属性。

有没有办法和Ansible一起做?

提前感谢您的回答。

例如

- hosts: localhost
vars:
array1: [a, b, c]
array2: [b, d, c, a]
tasks:
- debug:
msg: "{{ item.0 }} == {{ item.1 }} {{ item.0 == item.1 }}"
loop: "{{ array1|product(array2)|list }}"

给出

msg: a == b False
msg: a == d False
msg: a == c False
msg: a == a True
msg: b == b True
msg: b == d False
msg: b == c False
msg: b == a False
msg: c == b False
msg: c == d False
msg: c == c True
msg: c == a False

如果你想找到索引

- debug:
msg: "array1[{{ array1.index(item.0) }}] ==
array2[{{ array2.index(item.1) }}]"
loop: "{{ array1|product(array2)|list }}"
when: item.0 == item.1

给出

msg: array1[0] == array2[3]
msg: array1[1] == array2[0]
msg: array1[2] == array2[2]

最新更新