-1

erb 与 Puppet、Hiera 和模板结合使用时,我遇到了以下问题:

通过 Hiera,我得到了以下字符串作为变量:

首先是数组中的变量example(data[example])

something with _VARIABLE_ in it

example_information和变量

some kind of \1 and maybe also a \2

现在我想_VARIABLE_用包含合法反斜杠 () 的第二个字符串替换 Puppet 模板。所以我这样做了:

result=data['example'].gsub('_VARIABLE_', @example_information)

所以我example从一个数组中取出并用@example_information.

结果如下:

something with some kind of  and maybe also a  in it

没有反斜杠gsub将它们解释为反向引用。那么如何解决我的问题以保留我的反斜杠而不在 Hiera 文件中对它们进行双重转义?我需要在代码中进一步使用 Hiera 变量,而不需要双转义反斜杠。

4

1 回答 1

0

我现在这样做是为了解决该特定问题,如下所示:

又变了example

something with _VARIABLE_ in it

example_information和变量

some kind of \1 and maybe also a \2

模板中的代码部分:

# we need to parse out any backslashes
info_temp=example_information.gsub('\\', '__BACKSLASH__')

# now we substitute the variables with real data (but w/o backslashes)
result_temp=data['example'].gsub(/__ITEM_NAME__/, info_temp)

# now we put together the real string with backslashes again as before
result=result_temp.gsub('__BACKSLASH__', '\\')

现在结果如下所示:

something with some kind of \1 and maybe also a \2 in it

笔记

也许有更好的方法,但在我的研究中,我没有偶然发现更好的解决方案,所以如果你知道更好的方法,请添加评论。

于 2017-02-09T16:07:31.433 回答