Ansible 如何选择列表中的一个元素
我需要拆分文件名和扩展名:foo.barAnsible 如何选择列表中的一个元素,ansible,jinja2,Ansible,Jinja2,我需要拆分文件名和扩展名:foo.bar - name: split file set_fact: myvar: "{{ myfile | splitext | to_json }}" 使用splitext,我得到了一个包含2个元素的列表 ok: [localhost] => { "msg": [ "foo", ".bar" ] } 我必须使用第一个,但我不能: - name: test debug:
- name: split file
set_fact:
myvar: "{{ myfile | splitext | to_json }}"
使用splitext,我得到了一个包含2个元素的列表
ok: [localhost] => {
"msg": [
"foo",
".bar"
]
}
我必须使用第一个,但我不能:
- name: test
debug:
msg="{{ myvar[0] }}"
怎么了?用
列表过滤器替换至
过滤器:
- name: split file
set_fact:
myvar: "{{ myfile | splitext | list }}"
to_json
生成一个json字符串([“foo”,“.bar”]
),因为字符串在内部表示为字符列表,myvar[0]
引用其第一个字符([
)
在本例中,debug
输出令人困惑,因为msg
将被模板化并像列表一样显示
您始终可以使用myvar | type_debug
检查类型,对于字符串,您将看到unicode
(或AnsibleUnicode
)。将替换为_json
过滤器为列表
过滤器:
- name: split file
set_fact:
myvar: "{{ myfile | splitext | list }}"
to_json
生成一个json字符串([“foo”,“.bar”]
),因为字符串在内部表示为字符列表,myvar[0]
引用其第一个字符([
)
在本例中,debug
输出令人困惑,因为msg
将被模板化并像列表一样显示
您始终可以使用myvar | type_debug
检查类型,对于字符串,您将看到unicode
(或AnsibleUnicode
)