You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 04:45:43