如何将字符串变量转换为整数?

How to convert a string variable into integer?

提问人:southwind 提问时间:8/21/2023 最后编辑:U880Dsouthwind 更新时间:8/21/2023 访问量:114

问:

我正在尝试将 var 转换为整数,但它仍然显示为字符串。我试过了,但仍然没有运气。start_time| int

这个变量作为字符串从另一个系统进入 AWX,我需要在我的剧本中转换/转换为整数。我需要与 相同的输出。stop_time

谁能帮忙?谢谢

 - name: Set Vars conditions
   hosts: localhost

   vars:

     start_time: "0700"
     stop_time: 1900

   tasks:

   - name: Print start time
     ansible.builtin.debug: 
       msg: "{{ start_time }}"

   - name: Print stop time
     ansible.builtin.debug: 
       msg: "{{ stop_time }}"

   - ansible.builtin.set_fact:
     set_start_time: "{{ start_time | int}}"

   - ansible.builtin.debug:
      msg: "{{ set_start_time }}"

输出:

TASK [Print start time] ********************
task path: /runner/project/vars_check.yml:7
ok: [localhost] => {
"msg": "0700"
}

TASK [Print stop time] *********************
task path: /runner/project/vars_check.yml:10
ok: [localhost] => {
"msg": 1900
}

TASK [ansible.builtin.set_fact] ************
task path: /runner/project/vars_check.yml:13
ok: [localhost] => {
"ansible_facts": {
    "set_start_time": "700"
},
"changed": false
}

TASK [ansible.builtin.debug] ***************
task path: /runner/project/vars_check.yml:15
ok: [localhost] => {
"msg": "700"
}
ansible jinja2 ansible模板

评论


答:

1赞 U880D 8/21/2023 #1

如何将字符串var转换为整数?...我试过 | int ...

是的,这是强制数据类型的正确方法,你差不多了。

请注意set_fact模块

使用该设置会将 k=v 限制为字符串...

这意味着一项任务

   - ansible.builtin.set_fact:
     set_start_time: "{{ start_time | int}}"

将以字符串结束。

我需要在我的剧本中转换/转换为整数。

您只需要在必要时转换为整数,但在此之前不需要。最小的示例 playbook

---
- hosts: localhost
  become: false
  gather_facts: false

  vars:

    start_time: "0700"

  tasks:

  - name: Show value
    debug:
      msg: "Start time is {{ start_time | int }} and of type {{ start_time | int | type_debug }}"

将导致

TASK [Show value] **********************
ok: [localhost] =>
  msg: Start time is 700 and of type int

评论

0赞 U880D 8/25/2023
也许你也可以看看当有人回答我的问题时我该怎么办?