我正在使用[file lookup]读取整个文件,并将内容存储在变量中。我的游戏看起来像这样:

  - name: Store foo.xml contents in a variable
    set_fact:
     foo_content: "{{ lookup('file', 'foo.xml' ) | replace('\n', '')}}"

因此,上面的代码读取了foo.xml文件并将其存储在变量中,但是问题是当foo.xml中包含换行符时,它还在变量中包含了换行符。

我的foo.xml是这个文件:
<?xml version="1.0" encoding="utf-8"?>
<initialize_param>
    <secrets>
        <my_secret id="99">3VMjII6Hw+pd1zHV5THSI712y421USUS8124487128745812sajfhsakjfasbfvcasvnjasjkvbhasdfasgfsfaj5G8A9+n8CkLxk7Dqu0G8Jclg0eb1A5xeFzR3rrJHrb2GBBa7PJNVx8tFJP3AtF6ek/F/WvlBIs2leX2fq+/bGryKlySuFmbcwBsThmPJC5Z5AwPJgGZx</my_secret>
    </secrets>
</initialize_param>

输出除去换行符\ n但也包括制表符\ r&\ t

我需要摆脱\n,也需要摆脱额外的格式(\ r&\ t),而且在替换过滤器后,在触发数据库更新查询时出现错误
stderr: /bin/sh: 1: cannot open ?xml: No such file

最佳答案

使用Jinja trim过滤器:

"{{ lookup('file', 'foo.xml' ) | trim }}"

关于string - 如何从Ansible的lookup()模块的结果中删除断行符 '\n'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32016123/

10-13 05:14