list - 是否有在ansible中汇总列表内容的快捷方式?
问题描述
我有一个清单sList
:
sList = ['12','8','10']
我需要所有元素的总和sList
。
我在 jinja2 中遇到了sum()
函数,但它需要属性等,并且不知道如何将它与list
.
我试过:
- set_fact:
sList:
- '12'
- '8'
- '10'
- set_fact:
sumList: "{{ sum(sList) }}"
- debug: var=sumList
预期结果:sumList = 30,但出现以下错误:
"msg": "The task includes an option with an undefined variable. The error was: 'sum' is undefined
请帮忙。
谢谢
解决方案
过滤器sum "返回数字序列的总和"。变量sList是一个字符串列表。下面的任务将失败
- set_fact:
sList: ['12', '8', '10']
- set_fact:
sumList: "{{ sList|sum }}"
致命的:[本地主机]:失败!=> msg: '在 ({{ sList|sum }}) 上发生意外的模板类型错误:+ 的不支持的操作数类型:''int'' 和 ''AnsibleUnicode'''
要解决此问题,请使用数字列表。例如
- set_fact:
sList: [12, 8, 10]
- set_fact:
sumList: "{{ sList|sum }}"
- debug:
var: sumList
给
sumList: '30'
下一个选项是将列表中的项目转换为数字。映射int或float函数。例如
- set_fact:
sList: ['12', '8', '10']
- set_fact:
sumList: "{{ sList|map('int')|sum }}"
- debug:
var: sumList
- set_fact:
sumList: "{{ sList|map('float')|sum }}"
- debug:
var: sumList
给
sumList: '30'
sumList: '30.0'
推荐阅读
- xml - 是否可以在 Windows 操作中心警报中自定义 toast 通知到期?
- node.js - 使用现有连接创建 Sequelize
- django - 如何使用 django 更新购物车商品数量?
- c# - 不能隐式转换类型 IEnumerable
- css - 为什么不透明度没有动画?
- sage-erp - 如何获取 Sage 50 Api 密钥和秘密
- java - SAP Hybris 辅助服务模块 (ASM) - 无法生成组件
- symfony - 调用api返回500错误(调用成员函数isAdmin())
- php - 在调用 echo 命令的列时打印错误的日期
- excel - 将表值复制为网格格式