我正在使用[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/