是否可以使用正则表达式在 Puppet 中进行字符串替换/转换?
如果 $hostname 是“web1”,我希望 $hostname_without_number 是“web”。以下不是有效的 Puppet 语法,但我认为我需要这样的东西:
$hostname_without_number = $hostname.gsub(/\d+$/, '')
是的,有可能。
检查 puppet 函数参考:http ://docs.puppetlabs.com/references/2.7.3/function.html
有一个内置的正则表达式替换函数。它可能调用相同的底层 gsub 函数。
$hostname_without_number = regsubst($hostname, '\d+$', '')
或者,如果您更喜欢实际调用 Ruby,则可以使用内联 ERB 模板:
$hostname_without_number = inline_template('<%= hostname.gsub(/\d+$/, "") %>')
在此页面中:
https://blog.kumina.nl/2010/03/puppet-tipstricks-testing-your-regsubst-replacings-2/comment-page-1/
它得到了很好的解释,并且有一个用 irb 测试正则表达式的绝妙技巧。
通过这个链接和freiheit的答案,我可以用'\'替换'/'来解决我的问题。
$programfiles_sinbackslash = regsubst($env_programfiles,'\','/','G')