Ansible:比较整数时简单比较失败

Ansible:比较整数时简单比较失败

我有以下内容:

- set_fact:
   test_string: "{{ htmlres.content | regex_search('test-([0-9]+)', '\\1') | first}}"

这将检索包含在内容2中的字符串的一部分。htmlres.contenttest-2

所以现在我尝试比较该输出的结果,如果它不是 2,则执行失败,所以我尝试了这个:

- name: Fail if test_string is not 2
  fail: msg="Incorrect string. Expected 2, but instead got {{ test_string }}"
  when: test_string != 2

但是我已经输出了 test_string 的内容,而且我确实知道它是 2。为什么会失败呢?

我曾尝试将| string和添加| int到的末尾,test_string因为我第一次认为这将是类型比较的问题,但这也不起作用。

谢谢。

答案1

除非jinja2_native启用后,模板结果始终为字符串。您需要在比较时考虑到这一点。

- name: Fail if test_string is not 2
  fail: msg="Incorrect string. Expected 2, but instead got {{ test_string }}"
  when: test_string | int != 2

或者

- name: Fail if test_string is not 2
  fail: msg="Incorrect string. Expected 2, but instead got {{ test_string }}"
  when: test_string != '2'

相关内容