是否有一种快捷方式可以在 ansible 中对列表的内容求和?
Is there a shortcut to sum the contents of a list in 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
请帮忙。
谢谢
过滤器sumReturns一串数字的总和。变量 sList 是一个字符串列表。下面的任务将失败
- set_fact:
sList: ['12', '8', '10']
- set_fact:
sumList: "{{ sList|sum }}"
fatal: [localhost]: FAILED! =>
msg: 'Unexpected templating type error occurred on ({{ sList|sum }}): unsupported operand type(s) for +: ''int'' and ''AnsibleUnicode'''
要解决这个问题,请使用数字列表。例如
- set_fact:
sList: [12, 8, 10]
- set_fact:
sumList: "{{ sList|sum }}"
- debug:
var: sumList
给予
sumList: '30'
下一个选项是将列表项转换为数字。映射 int or 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'
我有一个列表 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
请帮忙。
谢谢
过滤器sumReturns一串数字的总和。变量 sList 是一个字符串列表。下面的任务将失败
- set_fact:
sList: ['12', '8', '10']
- set_fact:
sumList: "{{ sList|sum }}"
fatal: [localhost]: FAILED! => msg: 'Unexpected templating type error occurred on ({{ sList|sum }}): unsupported operand type(s) for +: ''int'' and ''AnsibleUnicode'''
要解决这个问题,请使用数字列表。例如
- set_fact:
sList: [12, 8, 10]
- set_fact:
sumList: "{{ sList|sum }}"
- debug:
var: sumList
给予
sumList: '30'
下一个选项是将列表项转换为数字。映射 int or 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'