例如,我有[1-5,7,9-11],我想让它转换为[1,2,3,4,5,7,9,10,11]。
在python中,我使用了intspan模块。我在Ansible过滤器里找不到这个。
发布于 2021-04-19 19:14:09
金佳没有这样的过滤器,它太复杂了,因为什么是模板系统,而不应该包含很多逻辑?。
这就是说,您可以编写一些事实,在range过滤器的帮助下也可以这样做。然后,您甚至可以使这成为一个通用的任务,您可以在任何其他的游戏手册,一个include,或任何最适合您的任务。
考虑到剧本:
- hosts: all
gather_facts: no
vars:
values: 1-4,8,9-11,16,36-42
tasks:
- set_fact:
int_span: >
{{
int_span | default([]) +
range(value[0] | int, value[1] | default(value[0]) | int + 1) | list
}}
loop: "{{ values.split(',') }}"
vars:
value: "{{ item.split('-') }}"
- debug:
var: int_span这意味着:
PLAY [all] *********************************************************************
TASK [set_fact] ****************************************************************
ok: [localhost] => (item=1-4)
ok: [localhost] => (item=8)
ok: [localhost] => (item=9-11)
ok: [localhost] => (item=16)
ok: [localhost] => (item=36-42)
TASK [debug] *******************************************************************
ok: [localhost] =>
int_span:
- 1
- 2
- 3
- 4
- 8
- 9
- 10
- 11
- 16
- 36
- 37
- 38
- 39
- 40
- 41
- 42
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 https://stackoverflow.com/questions/67160376
复制相似问题