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

Ansible中如何比较整数列表与数值,输出大于15的元素?

解决Ansible列表筛选大于15元素的问题

原代码问题分析

  1. when条件写法错误:when语句无需用{{}}包裹变量,且直接将列表与整数比较逻辑不成立——列表是多元素集合,无法和单个整数直接对比。
  2. msg表达式无效:{{greater than 15}}不是合法的Ansible模板表达式,无法被解析。
  3. 拼写错误:set fatc应为set_fact。

正确Playbook实现

方式1:逐个输出符合条件的元素

tasks:
  - name: 创建字符串列表变量
    set_fact:
      Continents: ["10","20"]

  - name: 将字符串列表转换为整数列表
    set_fact:
      int_list: "{{ Continents | map('int') | list }}"

  - name: 筛选并输出大于15的元素
    debug:
      msg: "{{ item }} greater than 15"
    loop: "{{ int_list | select('>', 15) | list }}"

方式2:统一输出提示(仅当存在符合条件元素时)

tasks:
  - name: 创建字符串列表变量
    set_fact:
      Continents: ["10","20"]

  - name: 转换为整数并筛选大于15的元素
    set_fact:
      filtered_list: "{{ Continents | map('int') | select('>', 15) | list }}"

  - name: 输出结果
    debug:
      msg: "greater than 15"
    when: filtered_list | length > 0

代码说明

  • map('int'):将列表中的字符串元素转换为整数类型。
  • select('>', 15):筛选出列表中大于15的元素。
  • loop:遍历筛选后的列表,逐个输出符合条件的元素提示;或通过判断筛选后列表的长度,在有符合条件元素时输出统一提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:35:18