Puppet中区分大小写的字符串比较

时间:2017-11-21 08:08:02

标签: regex string puppet

Puppet documentation表示语言与==的字符串比较不区分大小写。当我需要区分大小写的字符串比较时,我该怎么办?有没有比在这样的正则表达式中避难的更好的方法:

if $string =~ /^VALUE$/ {
  # ...
}

1 个答案:

答案 0 :(得分:0)

在内在的Puppet DSL中,您无法与==运算符进行区分大小写的字符串比较。您必须使用正则表达式运算符=~来执行区分大小写的字符串比较。

然而,正如@JohnBollinger指出的那样,你可以编写一个自定义函数来为你做这个,方法是利用Ruby的==运算符区分大小写的字符串:https://puppet.com/docs/puppet/5.3/functions_ruby_overview.html

自定义函数看起来像:

# /etc/puppetlabs/code/environments/production/modules/mymodule/lib/puppet/functions/mymodule/stringcmp.rb
Puppet::Functions.create_function(:'mymodule::stringcmp') do
  dispatch :cmp do
    param 'String', :stringone
    param 'String', :stringtwo
    return_type 'Boolean' # omit this if using Puppet < 4.7
  end

  def cmp(stringone, stringtwo)
    stringone == stringtwo
  end
end

然后您可以使用此自定义功能,如:

if stringcmp($string, 'VALUE') {
  # ...
}

从上面给出你的代码,字符串比较将区分大小写。