在 When 条件下转义正斜杠
Escape Forward Slash in When Condition
我正在尝试做一个 Ansible "when compare string not equals"
像这样:
when: "{{ result.stdout }} != '/var'"
我如何转义“/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 %}
这个有效:
when: "{{ result.stdout != '/var' }}"
我用破折号替换了斜杠并消除了这个错误:
vars:
- local_var_name: "{{ var_name | regex_replace('/', '-') }}"
tasks:
some_task:
...
when: local_var_name
你不应该在 when
statement:
中使用大括号
... the when clause, which contains a raw Jinja2 expression without double curly braces ...
在您的示例中,只需使用:
when: result.stdout != '/var'
我正在尝试做一个 Ansible "when compare string not equals"
像这样:
when: "{{ result.stdout }} != '/var'"
我如何转义“/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 %}
这个有效:
when: "{{ result.stdout != '/var' }}"
我用破折号替换了斜杠并消除了这个错误:
vars:
- local_var_name: "{{ var_name | regex_replace('/', '-') }}"
tasks:
some_task:
...
when: local_var_name
你不应该在 when
statement:
... the when clause, which contains a raw Jinja2 expression without double curly braces ...
在您的示例中,只需使用:
when: result.stdout != '/var'