2016-12-01 147 views
-2

我试图替换文件中的{{var}},不知道如何转义大括号。逃离大括号的花括号

" {{ item.key }} " 

当然会取代item.key但忽略{{}}。变量在我的文件看起来像这样替换:脚本的

define ('DB_HOST', '{{ DB_HOST }}'); 

部分:

replace: 
dest=env.php.j2 
regexp= " {{ item.key }} " << ?????? 
replace= " {{ item.value }} " 

,我需要的'内更换。 预期结果:

define ('DB_HOST', 'hostname'); 

在此先感谢。

+0

现在的问题是:为什么? Ansible中的Jinja2模板正是为此目的而设计的。你为什么要手动复制它们? – techraf

+0

@techraf在我的工作中,要替换的变量文件是这样写的,我不能改变它。必须替换整个{{var}} – Saus

+2

我在问:为什么? Ansible开箱即用,无需替换任何东西。 – techraf

回答

0

您不必自己替换变量。使用时只需将template模块:

template: 
    src: env.php.j2 
    dest: "/path/to/final/destination" 

和Ansible/Jinja2的将尽一切繁重的工作适合你。

+0

这是用许多文件夹和位置完成的,这就是为什么首先我要将文件“复制”到正确的文件夹,然后使用外部文件脚本我试图替换值。直到今天,当我不得不使用我们的围绕变量的{{}}模板时,这就没问题了。据我试用你的方式,模板不能使用我的字典也是外部文件。 – Saus