Ansible
Ansible 選擇列表中的空白元素
我需要一個包含*_names*列表中所有空白元素的變數。我試過這個:
blanks: "{{ _names|select('search', '') | list }}"
但它似乎不起作用
這是清單:
"_names": [ "", "ABC", "", "" ]
為了給出一些上下文,我需要這個變數來計算空白元素並進行比較。
簡單直覺的方法是
select
將元素等於空字元串。另一個有點反直覺但寫起來更緊湊的是簡單reject
的元素(預設情況下會拒絕所有非空值)。以下劇本展示了兩種解決方案,它們給出了相同的結果。注意:
reject
這裡的方法只有在列表中的其他非空元素不評估為假時才有效。如果您曾經錯誤的布爾值,它們也將被保留- hosts: localhost gather_facts: false vars: _names: ["","ABC","",""] blanks_select: "{{ _names | select('==', '') | list }}" blanks_reject: "{{ _names | reject | list }}" tasks: - debug: var: "{{ item }}" loop: - blanks_select - blanks_reject
這使:
PLAY [localhost] ********************************************************************* TASK [debug] ********************************************************************* ok: [localhost] => (item=blanks_select) => { "ansible_loop_var": "item", "blanks_select": [ "", "", "" ], "item": "blanks_select" } ok: [localhost] => (item=blanks_reject) => { "ansible_loop_var": "item", "blanks_reject": [ "", "", "" ], "item": "blanks_reject" } PLAY RECAP ********************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0