如何测试stderr是非空的::
- name: Check script
shell: . {{ venv_name }}/bin/activate && myscritp.py
args:
chdir: "{{ home }}"
sudo_user: "{{ user }}"
register: test_myscript
- debug: msg='myscritp is Ok'
when: not test_myscript.stderr
Run Code Online (Sandbox Code Playgroud)
所以,如果没有错误,我可以阅读::
TASK: [deploy | debug msg='critp is Ok] *******
ok: [vagrant] => {
"msg": "myscritp is Ok"
}
Run Code Online (Sandbox Code Playgroud)
并且cas stderr中的FATAL错误不为空.
Nas*_*asr 27
你可以检查空字符串(当stderr为空时)
- name: Check script
shell: . {{ venv_name }}/bin/activate && myscritp.py
args:
chdir: "{{ home }}"
sudo_user: "{{ user }}"
register: test_myscript
- debug: msg='myscritp is Ok'
when: test_myscript.stderr == ""
Run Code Online (Sandbox Code Playgroud)
如果要检查是否失败:
- debug: msg='myscritp has error: {{test_myscript.stderr}}'
when: test_myscript.stderr != ""
Run Code Online (Sandbox Code Playgroud)
Vla*_*tka 16
请参阅ansible-lint 默认规则。以下情况导致E602不与空字符串进行比较
when: test_myscript.stderr != ""
Run Code Online (Sandbox Code Playgroud)
正确的语法以及“ Ansible Galaxy Warning-Free”选项是
when: test_myscript.stderr | length > 0
Run Code Online (Sandbox Code Playgroud)
加法1. 当前规则说:
相反使用
when: var而不是when: var != ""(或'''when: not var而不是``when:var ==“”
Ale*_*lex 10
when: myvar | default('', true) | trim != ''
Run Code Online (Sandbox Code Playgroud)
我| trim != ''用来检查变量是否具有空值。我也总是添加| default(..., true)检查以捕获何时myvar未定义。