以下连接了三个字符串的列表:
> Template('Hello {{ my_list | join(", ") }}!').render(my_list=['a', 'b', 'c'])
'Hello a, b, c!'
以下内容不起作用,但说明了我要做的事情:
Template('Hello {{ my_list | append(":8080") | join(", ") }}!').render(my_list=['a', 'b', 'c'])
下面是我想做的Python等价物:
", ".join([x + ":8080" for x in ['a', 'b', 'c']])
虽然在Python中测试Jinja2表达式是最简单的,但我最终还是需要我的Jinja2表达式在Ansible剧本中工作,如以下Ansible片段:
- name: "join without append"
debug: msg="test={{ item | join(',') }}"
with_items:
- ["a", "b", "c"]
- name: "this doesn't work"
debug: msg="test={{ (item + ':8080') | join(',') }}"
with_items:
- ["a", "b", "c"]