很抱歉,如果之前已经有人问过这个问题,但我找不到任何符合我的问题的解决方案。
我正在尝试将必须转换的字符串转换为整数:
- hosts: myhost
vars:
- variable1: 15
- variable2: "15"
- variable3: "{{ variable2 | int }}"
Run Code Online (Sandbox Code Playgroud)
我尝试使用variable2
(string) 进行计算,所以我将其转换为 int 中的 int variable3
。但失败并显示错误消息
“({{variable3 + 1}})上发生意外的模板类型错误:强制转换为 Unicode:需要字符串或缓冲区,找到 int”
因此,我尝试type_debug
找出列出的 3 个变量的每种类型。
variable1
是int
variable2
是ansibleunicode
variable3
是unicode
ansibleunicode
当我unicode
已经使用| int
.
我应该怎么办?
尝试以下操作。
- hosts: myhost
vars:
- variable1: 15
- variable2: "15"
tasks:
- name: test
debug: msg="{{ variable2 | int + 1}}"
delegate_to: localhost
Run Code Online (Sandbox Code Playgroud)
输出:
TASK [test] ***********************************************************************************************************************
ok: [remote -> localhost] => {
"msg": "16"
}
Run Code Online (Sandbox Code Playgroud)
问:“当我已经转换它时,我仍然不明白为什么variable3类型是Unicode而不是整数。 ”
答: Jinja的输出始终是 string。这是一个模板设计器。例如,
- debug:
msg: "{{ item }} is {{ item|type_debug }}"
loop:
- "{{ var1 }}"
- "{{ var2 }}"
- "{{ var1|int }}"
- "{{ var2|int }}"
vars:
var1: 15
var2: "15"
Run Code Online (Sandbox Code Playgroud)
给出
msg: 15 is int
msg: 15 is str
msg: 15 is str
msg: 15 is str
Run Code Online (Sandbox Code Playgroud)
仅第一项被识别为整数。第一项中没有表达式,因此 Ansible 不会调用 Jinja 来评估它。相反,Ansible 直接获取变量的值。如果 Jinja 计算表达式,则输出的类型始终为string。
归档时间: |
|
查看次数: |
7330 次 |
最近记录: |