Ansible replace模块为变量加引号时避免重复添加的正则写法
解决方案
你可以直接使用下面修正后的Ansible任务:
- name: modify the file again to add quotes to variable replace: path: "/path/to/file" regexp: '^SOMEVARIABLE=([^''"].*)$' replace: "SOMEVARIABLE='\\1'"
调整说明
- 正则部分新增
[^'"]限定规则,只会匹配等号后第一个字符不是单引号/双引号的行,已经加过引号的行不会被命中,完全避免重复嵌套引号的问题。你已经确认变量值本身不含引号,该规则不会出现漏匹配或误匹配的情况。 - 修正了原任务中的变量名拼写错误:原replace字段误写为
SOMEVARIBLE(缺失字母A),会导致变量名被意外修改,现已对齐为正确的变量名。 - 如果需要改用双引号包裹变量值,仅需把replace字段内的单引号替换为双引号即可,正则规则无需调整。
内容的提问来源于stack exchange,提问作者ender.qa
相关产品推荐
相关产品推荐

