-1

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

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

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

请建议任何最好的编码方式。

4

1 回答 1

1

我正在尝试检查两个或多个变量是否为空。

我认为您的意思是您要确定几个变量中的任何一个是否为空字符串。您可以使用新reduce()功能来解决此问题。

例如,这...

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

... 将变量设置$is_any_emptytrue当且仅当至少一个变量$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并且至少是一个字符长。请注意,它将匹配仅包含空格的字符串;如果您不希望这样做,则将所需的模组留作练习。

于 2015-11-16T19:02:58.880 回答