如何统计循环运行且未被跳过的次数?
我正在尝试运行(类似的东西),想弄清楚这个循环实际上运行了多少次。
- name: this step
debug:
msg: "working on {{ item.name }}"
when: not item.skip
with_list:
- {name: t1, skip: True}
- {name: t2, skip: False}
- {name: t3, skip: False}
- {name: t4, skip: False}
- {name: t5, skip: True}
在这个简化的版本中,我想得到3。
register: somedata
- debug:
msg: "{{ somedata.results | length }}"
2 个回答
1
这会是这样吗:
- name: this step
debug:
msg: "working on {{ item.name }}"
when: "not item.skip"
with_items:
- { name: t1, skip: True }
- { name: t2, skip: False }
- { name: t3, skip: False }
- { name: t4, skip: False }
- { name: t5, skip: True }
register: loop_results
- name: print number of iterations
debug:
msg: "{{ loop_results.results | length }}"
1
假设你有一个叫 loop_results 的变量,计算一下有多少个项目被跳过了。
skip: "{{ loop_results.results |
json_query('[?skipped]') |
length }}"
计算一下这个循环总共运行了多少次。
run: "{{ loop_results.results|length - skip|int }}"
这是一个完整的测试手册示例。
- hosts: all
vars:
skip: "{{ loop_results.results |
json_query('[?skipped]') |
length }}"
run: "{{ loop_results.results|length - skip|int }}"
tasks:
- debug:
msg: "working on {{ item.name }}"
loop:
- {name: t1, skip: True}
- {name: t2, skip: False}
- {name: t3, skip: False}
- {name: t4, skip: False}
- {name: t5, skip: True}
register: loop_results
when: not item.skip
- debug:
var: loop_results
- debug:
var: skip
- debug:
var: run
提供的内容(简化版)
skip: '2'
run: '3'