【规则说明】空字符串比较。【规则说明】对空字符串进行比较
本文是 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