【发布时间】:2017-07-28 09:22:18
【问题描述】:
我有两个变量:a、b。
我想为变量c 分配一个值,基于该值:a 或b 包含更大的数值。
这是我试过的:
- set_fact:
c: "test1"
when: a <= b
- set_fact:
c: "test2"
when: b <= a
看起来它总是将c 设置为test1 而不是test2。
【问题讨论】:
标签: ansible
我有两个变量:a、b。
我想为变量c 分配一个值,基于该值:a 或b 包含更大的数值。
这是我试过的:
- set_fact:
c: "test1"
when: a <= b
- set_fact:
c: "test2"
when: b <= a
看起来它总是将c 设置为test1 而不是test2。
【问题讨论】:
标签: ansible
使用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 都是包含相同位数的数值的字符串但它会产生意想不到的结果是:
【讨论】: