我试图做一个Ansible"当比较字符串不等于"
像这样:when: "{{ result.stdout }} != '/var'"
如何逃避/ in' / var'因为它扔了一个:
The error was: template error while templating string: unexpected '/'.
我尝试使用\来转义/但是它会抛出错误:
ERROR! Syntax Error while loading YAML.
The offending line appears to be:
shell: rsync -a /var/ "{{ result.stdout }}"
when: "{{ result.stdout }} != '\/var'"
^ here
我尝试在默认值中创建变量:
默认值 - > main.yml
var_partition: /var
任务 - > main.yml
when: "{{ result.stdout }} != {{ var_partition }}"
但它会引发错误:
"The conditional check '{{ result.stdout }} != {{ var_partition }}' failed.
The error was: template error while templating string: unexpected '/'.
String: {% if /disk1 != /var %}
答案 0 :(得分:2)
这有效:
when: "{{ result.stdout != '/var' }}"
答案 1 :(得分:0)
我用破折号替换了斜线并摆脱了这个错误:
vars:
- local_var_name: "{{ var_name | regex_replace('/', '-') }}"
tasks:
some_task:
...
when: local_var_name
答案 2 :(得分:0)
您不应在when
statement中使用大括号:
... when子句,其中包含原始Jinja2表达式没有双花括号 ...
在您的示例中,只需使用:
when: result.stdout != '/var'