String Ansible将字符串拆分为最大长度子字符串列表的最佳实践?
这显示了我正在尝试做什么String Ansible将字符串拆分为最大长度子字符串列表的最佳实践?,string,ansible,until-loop,String,Ansible,Until Loop,这显示了我正在尝试做什么 --- - hosts: localhost gather_facts: false vars: str: "abcdefg" str_parts: [] tasks: - name: Break string into list of max 3 character parts set_fact: str_parts: "{{ str_parts + [ str[:3] ]
---
- hosts: localhost
gather_facts: false
vars:
str: "abcdefg"
str_parts: []
tasks:
- name: Break string into list of max 3 character parts
set_fact:
str_parts: "{{ str_parts + [ str[:3] ] }}"
str: "{{ str[3:] }}"
until: str == ""
使用-vvv运行它表明循环代码只执行一次。str_parts获得单成员“abc”,str更改为“defg”,日志显示“失败-重试:将字符串拆分为最多3个字符的部分”消息,直到超时
为什么不循环,呃,循环
我可以通过使用命令或shell模块在断点处插入逗号,然后使用{{str | split(“,”)}来解决这个问题,但纯Ansible解决方案会更好
编辑:例如,bug主题的行为
-设置事实:
str|u部分:{{str|batch(3)| map('join')}}”
给予
stru零件:
-abc
-def
-g
可以仅选择匹配的项目,例如:
-设置事实:
str|u部分:{{str|batch(3)| map('join')| select('match','^.{3}$')}
给予
stru零件:
-abc
-def
谢谢弗拉基米尔,这些都是优雅的解决方案