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