Ansible 转义双引号和单引号
Posted
技术标签:
【中文标题】Ansible 转义双引号和单引号【英文标题】:Ansible escaping double quotes and single quotes 【发布时间】:2015-10-07 12:44:40 【问题描述】:我想用这个 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..
如果我在 ansible 脚本中使用 ''\"http-bio-30011\"''
nrpe.cfg 中的结果是
...-C "http-bio-30011"...
我怎样才能转义单引号和双引号来得到这个-C '"http-bio-30011"'
?
问候乔治
【问题讨论】:
如果回答对你有帮助,最好accept它。 【参考方案1】:这是lineinfile
模块中的bug。
从 YAML 的角度来看,正确的语法如下(但只有在修复错误时才会起作用)。你应该 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'
【讨论】:
以上是关于Ansible 转义双引号和单引号的主要内容,如果未能解决你的问题,请参考以下文章
Javascript - 如何在 Kendo 模板上转义双引号和单引号