Potrebujem jednoduchú vec - ak je premenná false
alebo prázdny reťazec, potom ho vyhodnoťte false
, V opačnom prípade vyhodnotiť ako pravdivé.
skúsil som bool(var)
ale ja sa dostanem:
UndefinedError: "bool" is undefined
Potom som to skúsil var | bool
ale aj keď var nie je prázdny, vyhodnotí sa to false
, Ako zabezpečiť, aby táto podmienka fungovala?
odpovede:
1 pre odpoveď č. 1Našiel som možné riešenie v rubínovom štýle:
when: not not var
Ale je to dosť škaredé. Zabudol som to povedať bez not not
var vyhodnocuje reťazec, aby bolo možné zistiť chyby. Dúfam, že pre lepšiu odpoveď, tak prosím, pridajte ďalšiu odpoveď, ak máte.
0 pre odpoveď č. 2
Váš hlavný problém spočíva v tom, že pri použití bude čokoľvek iné ako „skutočné“ vyhodnotené ako nepravdivé var | bool
.
Ak ho vždy zadávate ako reťazec (napr. var: ""
alebo var: "false"
), potom môžete skontrolovať rovnosť reťazcov:
when: condition == "false" or condition == ""
Ak máte túto možnosť, môžete pridať aj boolovský šek:
when: not condition or condition == "false" or condition == ""
Prípadne by ste mohli predvoliť na logický a voliteľne prepísať. Môžete mať napríklad rolu, ktorá má podmienečnú úlohu:
Úloha / foo / úlohy / main.yml
- name: echo foobar
shell: echo "foobar"
when: echo_foo
Úloha / foo / defaults / main.yml
echo_foo: false
Potom by sme to však mohli prepísať na úrovni skupiny alebo hostiteľa rôznej úrovne:
group_vars / foobar-nodes.yml
echo_foo: true