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

Ansible如何正确判断列表var1所有元素均包含于列表var2

错误原因

你当前使用的var1 in var2判断逻辑,是检查整个var1列表是否作为单个独立元素存在于var2中。但var2的所有元素都是字符串,不存在和var1完全相等的列表元素,因此永远无法得到正确结果。

正确实现方式

你需要判断var1是否为var2的子集,也就是var1的每一个元素都能在var2中找到,最简便的写法是借助Ansible内置的difference差集过滤器:

  • 差集过滤器var1 | difference(var2)会返回「存在于var1、但不存在于var2」的所有元素组成的新列表
  • 如果这个新列表长度为0,就说明var1的所有元素都在var2中,满足校验要求

修正后的完整任务代码如下:

- name: check condition
  ansible.builtin.shell: "echo all values are there"
  when: (var1 | difference(var2)) | length == 0

注意:原任务代码里Shell和When首字母大写不符合Ansible语法要求,关键字和模块名需要使用小写,推荐使用带命名空间的完整模块名ansible.builtin.shell避免模块冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:18:17