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

如何避免Ansible的file lookup将换行符替换为\n?

Ansible中通过lookup获取文件时保留原始换行的方法

使用ansible.builtin.file lookup读取文件内容时,换行符会被转义为\n,无法原样输出文件的换行格式。以下是解决方法:

示例场景

foo.txt内容:

This is dummy1
This is dummy2
This is dummy3
This is dummy4
This is dummy5

原Playbook执行后,输出的msg中换行被替换为\n,不符合预期。


方案1:用var替代msg参数

debug模块的var参数会直接输出变量的原始格式,不会转义换行符。修改后的Playbook:

- name: Gather info on backend servers
  hosts: localhost
  gather_facts: no
  tasks:
    - ansible.builtin.debug:
        var: lookup('ansible.builtin.file', '/tmp/foo.txt')

执行后输出将保留原始换行:

TASK [ansible.builtin.debug] *******************************************************************************************************************************
ok: [localhost] => {
    "lookup('ansible.builtin.file', '/tmp/foo.txt')": "This is dummy1
This is dummy2
This is dummy3
This is dummy4
This is dummy5"
}

方案2:使用多行块字符串定义msg

如果必须使用msg参数,可采用YAML的多行块字符串语法(|),让内容以原始换行形式输出:

- name: Gather info on backend servers
  hosts: localhost
  gather_facts: no
  tasks:
    - ansible.builtin.debug:
        msg: |
          {{ lookup('ansible.builtin.file', '/tmp/foo.txt') }}

此方式输出的msg会完全保留文件中的换行结构,匹配预期格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:08:21