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

How to check multiple variable is empty or not in Puppet 4.x

我正在尝试检查两个或多个变量是否为空。为了实现它,我找到了以下方法。

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

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

请提出任何最佳编码方式。

I am trying to check two or more variables is empty or not.

我带你的意思是你要判断几个变量中的any是否为空串。您可以使用新的 reduce() 函数来解决这个问题。

例如,这个...

$is_any_empty = reduce([$one, $two, $three], false) |$memo, $entry| {
    $memo or ($entry == '')
}

... 将变量 $is_any_empty 设置为 true 当且仅当至少一个变量 $one$two$three 包含一个空字符串,这就是你问的。

尽管您做了澄清,但我怀疑这并不是您真正想要的。我最好的猜测是,您实际上想要确定一组变量的 all 是否具有 non 空字符串的值(而不是未定义或具有根本不是字符串的值)。这种类型感知检查可以在 Puppet 4 的新类型系统的帮助下完成:

$all_are_nonempty = reduce([$one, $two, $three], true) |$memo, $entry| {
    $memo and ($entry =~ String[1])
}

$entry =~ String[1] 是一个布尔表达式,用于评估变量 $entry 的值是否具有类型 String 并且至少有一个字符长。请注意,它将匹配仅包含空格的字符串;如果您不想要,那么需要的模组留作练习。