Puppet documentation表示语言与==
的字符串比较不区分大小写。当我需要区分大小写的字符串比较时,我该怎么办?有没有比在这样的正则表达式中避难的更好的方法:
if $string =~ /^VALUE$/ {
# ...
}
答案 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') {
# ...
}
从上面给出你的代码,字符串比较将区分大小写。