我有一个使用任务收集的值在 ansible 中生成的列表。在该列表中,有一些空字符串,因为某些键没有分配给它们的值。所以,我想要实现的是将该列表分配给一个新列表,但没有那些空值。
list1: [
"a",
"b",
"",
"7",
""
]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法,但似乎不起作用:
set_fact:
list2: "{{ list1 1 | rejectattr('') |list }}"
Run Code Online (Sandbox Code Playgroud)
有没有人能够指出我做错了什么并为我的问题提供解决方案?
Ansible version: 2.9.1
问:从 list1 ["a", "b", "", "7", ""] 中删除空值
答:只需使用选择过滤器。引用:
“如果未指定测试,则每个对象都将被评估为布尔值。”
- set_fact:
list2: "{{ list1|select()|list }}"
- debug:
var: list2
Run Code Online (Sandbox Code Playgroud)
给
"list2": [
"a",
"b",
"7"
]
Run Code Online (Sandbox Code Playgroud)
通过拒绝空字符串可以获得相同的结果。例如
- set_fact:
list2: "{{ list1|reject('match', '^$')|list }}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2572 次 |
| 最近记录: |