我有两个变量:a
,b
。
我想根据以下内容为变量c
分配一个值:a
或b
包含更大的数值。
这是我尝试过的:
- set_fact:
c: "test1"
when: a <= b
- set_fact:
c: "test2"
when: b <= a
看起来始终将c
设置为test1
而不是test2
。
答案 0 :(得分:11)
使用if-else
表达式:
- set_fact:
c: "{{ 'test1' if (a >= b) else 'test2' }}"
使用三元运算符:
- set_fact:
c: "{{ (a >= b) | ternary ('test1', 'test2') }}"
使用您自己的正确代码(请参阅下面的通知)
上述任何一种方法都要求比较中使用的两个变量具有相同的类型才能给出合理的结果。对于数值比较,它们要求两个值都是整数。
问题的代码:
- set_fact:
c: "test1"
when: a <= b
- set_fact:
c: "test2"
when: b <= a
在两种情况下正常工作:
a
和b
都是整数a
和b
是包含具有相同位数的数值的字符串然而,它会产生意想不到的结果: