我正在尝试将字符串比较的结果分配给ansible(2.5.4)中的布尔变量,但不管我怎么做它的 False ,即使它应该是 True :
OS_ENV: "test"
IS_TEST: '{{ "OS_ENV" == "test"}}'
#IS_TEST: '{{ "OS_ENV" == "test"}}'
#IS_TEST: '{{ "OS_ENV" == "test" | bool}}'
#IS_TEST: "{{ OS_ENV == 'test' | bool }}"
#IS_TEST: ("{{OS_ENV}}" == 'test')
#IS_TEST: true
test_boolean: "{{'TEST_IS_TRUE' if IS_TEST else 'TEST_IS_FALSE'}}"
打印结果的任务:
- name: "test_boolean is {{ test_boolean }} when IS_TEST is {{ IS_TEST }}"
debug:
msg: "Message is: test_boolean is {{ test_boolean }} when IS_TEST is {{ IS_TEST }}"
在上述所有案例中都给出了:
"msg": "Message is: test_boolean is TEST_IS_FALSE when IS_TEST is False"
这是错的,我错过了什么?
答案 0 :(得分:2)
以下表达式将始终生成false
:
IS_TEST: '{{ "OS_ENV" == "test"}}'
字符串OS_ENV
与字符串test
不匹配。
IS_TEST: '{{ "OS_ENV" == "test" | bool}}'
字符串OS_ENV
与false
不匹配(即字符串test
强制转换为布尔值,因为|
优先于==
。)
IS_TEST: "{{ OS_ENV == 'test' | bool }}"
变量OS_ENV
值与false
不匹配。
IS_TEST: ("{{OS_ENV}}" == 'test')
字符串{{OS_ENV}}
与字符串test
不匹配。
将变量值与字符串进行比较的表达式为:
IS_TEST: '{{ OS_ENV == "test" }}'