【规则说明】空字符串比较。【规则说明】对空字符串进行比较

本文是 Ansible lint Advent Calendar 2022 日历第 2 22 天的文章。

这次我们将解释空字符串比较规则。

空字符串比较

在Ansible playbook等中,empty-string-compare用于检查在指定条件时是否使用了空字符串。空字符串的比较以jinja2过滤器的形式进行。

when: var != “”ではなくwhen: var | length > 0と記述する

when: var == “”ではなくwhen: var | length == 0と記述する

jinja2 过滤器通过 var | length 计算变量 var 的字符数。然后将字符数结果与 0 进行比较。从编程角度来说,为了避免副作用,该处理将不是字符串和数字之间的比较,而是数字和数字之间的比较。

在中文中,”empty-string-compare” 默认是未启用的。如果要启用 “empty-string-compare”,需要修改 Ansible lint 的配置文件。

enable_list:
  - empty-string-compare

有问题的代码 de de

如果Ansible无法获取目标操作系统的信息,则执行/sbin/shutdown -t now命令。

--
- name: Example playbook
  hosts: all
  tasks:
    - name: Shut down
      ansible.builtin.command: /sbin/shutdown -t now
      when: ansible_os_family == "" # <- 空の文字列で比較している

修改过的代码

---
- name: Example playbook
  hosts: all
  tasks:
    - name: Shut down
      ansible.builtin.shell: |
        /sbin/shutdown -t now
        echo $var ==
      when: ansible_os_family | length == 0 # <- jinja2 テンプレートの形式で記述する

请参考以下网站

    empty-string-compare — Ansible Lint Documentation
广告
将在 10 秒后关闭
bannerAds