Ansible 如何选择列表中的一个元素

Ansible 如何选择列表中的一个元素,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:

我需要拆分文件名和扩展名:foo.bar

  - 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