![ansible lineinfile 转义引号丢失](https://linux22.com/image/660409/ansible%20lineinfile%20%E8%BD%AC%E4%B9%89%E5%BC%95%E5%8F%B7%E4%B8%A2%E5%A4%B1.png)
使用 ansible 1.5.4,命令
lineinfile: dest=/etc/bash.bashrc line="bind '\"\e[B\"':history-search-forward"
添加行
bind '"\e[B"':history-search-forward
完美/etc/bash.bashrc
。
在 ansible 1.9.1 上,相同的 ansible 指令会生成以下行,这会弄乱我在 lineinfile 命令中转义的引号:
bind \e[B:history-search-forward
我该如何修复引号,以便添加正确的行
答案1
通常,可以使用多行输入形式来避免一些混乱,尤其是在输入冒号时:
command: > curl -X POST -H 'Content-Type: application/json' --data '{"name": "{{ item.name }}", "comment": "{{ item.comment }}", "DefaultDistribution": "{{ item.default_distribution }}", "DefaultComponent": "{{ item.default_component }}" }' http://localhost:8080/api/repos
答案2
我编写了一个小型的 Ansible 剧本,我认为它可以完成你想要的功能(尽管是针对测试文件而不是实际的 bashrc)。
---
- name: Example for serverfault.com
hosts: all
tasks:
- name: Put line with quotes, backslash, and colon in a file
lineinfile:
dest: /home/vagrant/testfile.txt
create: yes
line: "bind '\"\\e[B\"':history-search-forward"
我已经运行了这个并且在 testfile.txt 中得到了这一行:
bind '"\e[B"':history-search-forward
我正在使用 Ansible 2.1.1.0。我不知道它与 1.9.1 有何不同