如何在Puppet 4.x中检查多个变量是否为空

时间:2015-11-16 05:52:16

标签: puppet puppet-enterprise

我试图检查两个或多个变量是否为空。为实现这一目标,我找到了以下方法。

if $path {
    if $name {
          notify { "Path : ${path}": }
          notify { "Name : ${name}": }
    }
}

如果我们需要检查两个以上的变量,如何检查它?

请建议任何最佳的代码方式。

1 个答案:

答案 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就会留作练习。