Ansible中列表的max过滤器仅识别到9?问题排查求助
Ansible max过滤器返回9而非10的原因及解决办法
核心原因是你的list1列表里的元素是字符串类型,不是数值类型。
字符串类型的元素比较时,是按单个字符的ASCII码值逐位对比的:'10'的第一个字符是'1',它的ASCII码比'9'的ASCII码小,所以在字符串排序逻辑里,'9'会被判定为比'10'大,最终max过滤器返回'9'。
解决办法
- 直接定义数值类型的列表:
list1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - 如果列表已经是字符串类型,先用
map('int')把所有元素转为整数再取最大值:- name: Find the maximum number from the list1 set_fact: ds_max_number: "{{ list1 | map('int') | max }}"
内容的提问来源于stack exchange,提问作者LJS
相关产品推荐
相关产品推荐

