我有这样的字典:
env: qat
target_host: >
{%if env in ['prd'] %}one
{%elif env in ['qat','stg'] %}two
{%else%}three
{%endif%}
Run Code Online (Sandbox Code Playgroud)
当我打印它时,我得到:
ok:[localhost] => {"var":{"target_host":"two"}}
所以它将行末尾的\n转换为空格.这正是应该做的.但是在这种情况下,我只是试图分散线条以使if/else的结构更具可读性,而且我不想要额外的空间.如果我把它全部放在没有>的一行上,它可以正常工作但我希望能够使它成为多行,这样它更容易阅读.
我发现这个问题 有没有办法表示一个长字符串,在YAML文档中的多行上没有任何空格?
所以我能做到:
env: qat
target_host: "{%if env in ['prd'] %}one\
{%elif env in ['qat','stg'] %}two\
{%else%}three\
{%endif%}"
Run Code Online (Sandbox Code Playgroud)
这给出了理想的结果.
无论如何要实现这一目标而不是更加混乱吗?
udo*_*dan 10
在Jinja*中,您可以通过在块的开头/结尾添加减号来删除空格/换行符.这应该做的伎俩:
env: qat
target_host: >
{%if env in ['prd'] -%}one
{%- elif env in ['qat','stg'] -%}two
{%- else -%}three
{%- endif%}
Run Code Online (Sandbox Code Playgroud)
*Jinja 2是Ansible使用的模板引擎.
小智 5
也许您需要的是|
文字?
env: qat
target_host: |
{%if env in ['prd'] %}one
{%elif env in ['qat','stg'] %}two
{%else%}three
{%endif%}
Run Code Online (Sandbox Code Playgroud)
这不会将新行"折叠"到空格中,如果选择的那样 >
归档时间: |
|
查看次数: |
9933 次 |
最近记录: |