是什么原因导致Ansible将“虚假和真实”评估为“真实”?

时间:2017-12-19 07:19:02

标签: ansible conditional-statements

从我对how Ansible parses Booleans的问题的一个很好的答案中学习,我仍然不明白为什么Ansible最终会将以下条件评估为True而不是False

在INI格式的广告资源中定义两个变量:

a=false     # parsed as 'unicode' (String)
b=True      # parsed as 'bool'

现在测试一些简单的条件:

- debug:
    msg: "The variable 'a' is true!"
  when: a

- debug:
    msg: "The variable 'b' is true!"
  when: b

- debug:
    msg: "The variables 'a' and 'b' are both true!"
  when: a and b

结果是a为假,b为真,有趣的是a and b也是 true

TASK [jenkins : debug] **********************************************************
skipping: [localhost] => {
    "skip_reason": "Conditional result was False", "skipped": true
}

TASK [jenkins : debug] **********************************************************
ok: [localhost] => {
    "msg": "The variable 'b' is true!"
}

TASK [jenkins : debug] **********************************************************
ok: [localhost] => {
    "msg": "The variables 'a' and 'b' are both true!"
}

在对this question的回答中,解释了以下内容:

  

在python中,任何非空字符串都应该是真实的。但直接   在评估为false的条件下使用。

因此,这解释了when: a评估为False,但它没有解释为什么when: a and b评估为True。

如果有人能够详细解释这一结果,那就太棒了。

0 个答案:

没有答案