You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何通过换行符拼接多个变量生成字符串?

Ansible变量拼接后实现换行显示的解决方法

问题场景

现有Ansible脚本如下:

---
- hosts: localhost

  vars:
    new_line: "\n"
    text_msg1: "Hello"
    text_msg2: "Bye"

  tasks:
  - name: append
    set_fact:
      new_text: "{{ text_msg1 + new_line + text_msg2 }}"

  - name: Show Output
    debug:
      msg: "{{ new_text }}"

执行后输出中,换行符\n被显示为字面量:

TASK [Show Output] ****
ok: [localhost] => {
    "msg": "Hello\nBye"
}

期望输出为换行后的格式:

msg": "Hello
       Bye"

要求保持text_msg1 + new_line + text_msg2的变量生成方式,且不在每个text_msg变量末尾添加\n。

解决方案

方法一:使用var参数输出变量

将debug任务的msg替换为var,Ansible会自动解析变量中的换行符:

- name: Show Output
    debug:
      var: new_text

输出效果:

TASK [Show Output] ****
ok: [localhost] => {
    "new_text": "Hello
Bye"
}

方法二:替换换行符添加缩进(匹配期望格式)

如果需要严格匹配你想要的缩进格式,可以在msg中使用replace过滤器,将单个换行符替换为换行+7个空格:

- name: Show Output
    debug:
      msg: "{{ new_text | replace('\n', '\n       ') }}"

执行后输出将完全符合期望:

TASK [Show Output] ****
ok: [localhost] => {
    "msg": "Hello
       Bye"
}

内容的提问来源于stack exchange,提问作者andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:13:15