我有一个数组,来自循环的注册结果.
它有 4 个元素.
我想遍历数组的项目,循环,序列:0-3(3,表示最后一个元素).
当我做"硬编码"时,如下所示,一切都很好,我得到了我想要的结果.
但我不知道如何将序列变量放在结果变量中, 请问有人可以指导我吗?
工作代码:
- name: Show output array
debug:
msg:
- "{{ output.results[0] }}" # This also works
- "{{ output.results.0.stdout }}"
- "{{ output.results.1.stdout }}"
- "{{ output.results.2.stdout }}"
- "{{ output.results.3.stdout }}"
run_once: yes
非工作代码(语法错误)
- name: Show output array
debug:
msg:
- "{{ output.results[my_item] }}" # Not Working
- "{{ output.results.{{ my_item }}.stdout }}" # Not working
- "{{ output.results.(my_item|int) }}" # Tried hard with lot of patterns.. Still KO
run_once: yes
with_sequence: 0-{{ output.results | length -1 }} # This works, tested
loop_control:
loop_var: my_item
任务 [显示输出数组] ****** 致命:[本地主机]:失败!=> {"msg":"模板字符串时出现模板错误:预期的名称或数字。字符串: {{ output.results.{{ my_item }}.stdout }}">
我有一个数组,来自循环的注册结果。
从您的问题来看,您似乎正在output.results[0-n]
中获得一个数组.此外,您在debug
任务中有 3 条消息。错误是针对第二条消息的:
- "{{ output.results.{{ my_item }}.stdout }}" # Not working
它抱怨在已经开放的金贾语境中不必要的{{ .. }}
。
简单的方法:
由于output.results
已经是一个数组,您可以直接循环它,然后item.stdout
。
例:
- debug:
msg: "{{ item.stdout }}"
with_items: "{{ output.results }}"
使用序列或range
:
在示例中使用range
作为with_sequence
替换为loop
。从文档:
with_sequence
被loop
和range
功能以及可能的format
过滤器所取代。
- debug:
msg: "{{ output.results[my_item].stdout }}"
loop: "{{ range(0, output.results|length) | list }}"
loop_control:
loop_var: my_item