![](/img/trans.png)
[英]Python BeautifulSoup Ampersand issue Mac vs. Linux Ubuntu
[英]Ansible escaping a string issue on mac vs ubuntu?
使用以下代码:
- name: Add the gii config for main.php on staging
blockinfile:
dest: "{{ www_path }}/protected/config/main.php"
marker: "//Gii"
insertafter: "\'modules\'=>array\\("
block: "{{ gii_content }}"
我在 OSX 上遇到语法错误:
ERROR! Syntax Error while loading YAML.
The offending line appears to be:
marker: "//Gii"
insertafter: "\'modules\'=>array\\("
^ here
然而在 ubuntu 上,没有这样的问题,并且剧本可以无缝运行。 有任何想法吗?
如果你通过 YAML 解析器运行它,它会告诉你它发现了一个未知的转义字符,所以 OS X 就在那里。 \\'
的目的是什么? 如果想法是匹配该字符串并且反斜杠像这样出现在文件中,您应该在那里放置两个反斜杠:
- name: Add the gii config for main.php on staging
blockinfile:
dest: "{{ www_path }}/protected/config/main.php"
marker: "//Gii"
insertafter: "\\'modules\\'=>array\\("
block: "{{ gii_content }}"
如果array
后面有两个反斜杠,你需要在那里有 4 个反斜杠,只是为了转义。 虽然因为insertafter
接受一个正则表达式 and (
在正则表达式中具有特殊含义,但实际上可能需要将其中的 6 个放在那里。
- name: Add the gii config for main.php on staging
blockinfile:
dest: "{{ www_path }}/protected/config/main.php"
marker: "//Gii"
insertafter: "\\'modules\\'=>array\\\\\\("
block: "{{ gii_content }}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.