我正在尝试检查两个或多个变量是否为空。为了实现它,我找到了以下方法。
if $path {
if $name {
notify { "Path : ${path}": }
notify { "Name : ${name}": }
}
}
如果我们需要检查两个以上的变量,如何检查呢?
请建议任何最好的编码方式。
我正在尝试检查两个或多个变量是否为空。为了实现它,我找到了以下方法。
if $path {
if $name {
notify { "Path : ${path}": }
notify { "Name : ${name}": }
}
}
如果我们需要检查两个以上的变量,如何检查呢?
请建议任何最好的编码方式。
我正在尝试检查两个或多个变量是否为空。
我认为您的意思是您要确定几个变量中的任何一个是否为空字符串。您可以使用新reduce()
功能来解决此问题。
例如,这...
$is_any_empty = reduce([$one, $two, $three], false) |$memo, $entry| {
$memo or ($entry == '')
}
... 将变量设置$is_any_empty
为true
当且仅当至少一个变量$one
、$two
和$three
包含一个空字符串,这就是您所要求的。
但是,即使您进行了澄清,我怀疑这并不是您真正想要的。我最好的猜测是,您实际上想要确定所有变量集的值是否都是非空字符串(而不是未定义或根本不是字符串的值)。这种类型感知检查可以在 Puppet 4 的新类型系统的帮助下完成:
$all_are_nonempty = reduce([$one, $two, $three], true) |$memo, $entry| {
$memo and ($entry =~ String[1])
}
这$entry =~ String[1]
是一个布尔表达式,用于评估变量的值是否$entry
具有类型String
并且至少是一个字符长。请注意,它将匹配仅包含空格的字符串;如果您不希望这样做,则将所需的模组留作练习。