Ansible转义双引号和单引号

时间:2015-10-07 12:44:41

标签: escaping ansible double-quotes single-quotes

我想使用此ansible命令在nrpe.cfg中插入一个nrpe命令

check_tomcat_threads.pl -H localhost -p 30011 -C '"http-bio-30011"' -w 200 -c 50

但问题是'"和"'

要在nrpe.cfg中设置此行,请使用命令

 - { regexp: '^command\[SERVICE_tomcat_pi_Threads\]', line: "command[SERVICE_tomcat_Threads_pi]=/appiu/monitoring/check_tomcat_threads.pl -H localhost -p 30011 -C '\"http-bio-30011\"' -w 200 -c 50" }

但是nrpe.cfg中的结果是

...-C http-bio-30011..

如果我使用' \" http-bio-30011 \"''在ansible脚本

nrpe.cfg中的结果是

...-C "http-bio-30011"... 

如何使用单引号和双引号来获取此-C '"http-bio-30011"'

Greetings Georg

1 个答案:

答案 0 :(得分:5)

lineinfile模块中的bug

从YAML的角度来看,正确的语法如下(但只有在修复bug时才会起作用)。在双引文字中,您应escape只有两个字符"\

line: "command[SERVICE_tomcat_Threads_pi]=/appiu/monitoring/check_tomcat_threads.pl -H localhost -p 30011 -C '\"http-bio-30011\"' -w 200 -c 50"

要暂时解决此问题,您可以使用:

line: 'command[SERVICE_tomcat_Threads_pi]=/appiu/monitoring/check_tomcat_threads.pl -H localhost -p 30011 -C \''"http-bio-30011"\'' -w 200 -c 50'