You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何为循环添加筛选条件 仅获取count=1对应的subclientName

解决方案

方案1:使用loop+when条件过滤(逻辑直观,适合新手)

直接遍历所有results条目,通过when条件筛选count为1的条目后再输出对应subclientName:

- debug:
    msg: "{{ item.item.subclientName }}"
  loop: "{{ countbackupsetName.results }}"
  # 如果你的count返回值是字符串类型(如之前输出里的带引号"1"),请改成 when: item.count == "1"
  when: item.count == 1

方案2:使用Jinja过滤器提前筛选(效率更高,减少无效遍历)

通过selectattr过滤器直接筛选出符合条件的条目,再循环:

- debug:
    msg: "{{ item.item.subclientName }}"
  loop: "{{ countbackupsetName.results | selectattr('count', 'equalto', 1) | list }}"
  # 同样如果count是字符串,把equalto的参数改为"1"即可

方案3:一次性获取所有符合条件的名称列表

如果你不需要逐个输出,想直接拿到所有符合条件的subclientName组成的列表,可以用以下写法:

- name: 获取所有count=1的subclientName列表
  debug:
    msg: "{{ countbackupsetName.results | selectattr('count', 'equalto', 1) | map(attribute='item.subclientName') | list }}"

原Jinja代码报错原因

你第一层循环拿到的p已经是countbackupsetName.results中的单个元素对象,不是数组索引,所以不能用countbackupsetName.results[p]的写法,直接访问p.count、p.item即可获取对应属性。

内容的提问来源于stack exchange,提问作者dmitry tailakov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:06:03