如何在Puppet中检查哈希指定键是否存在并赋值?
Puppet哈希查找并设置默认值的实现方法
你不需要仅依赖if else条件语句,Puppet提供了多种更简洁的方式来实现哈希查找并设置默认值,同时修正你之前的错误代码如下:
1. 最简洁的方式:使用哈希get方法(Puppet 4.10及以上版本支持)
直接调用哈希的get方法,第一个参数是要查找的键,第二个参数是默认值,当键不存在时自动返回默认值:
Hash[String, String] $hashtest = { "abc" => "test1", "xyz" => "test2" } String $key = "some_key" # 你的目标键变量 String $result = $hashtest.get($key, "test")
2. 修正你的case表达式写法
你之前的错误在于:哈希中不存在对应键时,$hashtest[$key]返回的是undef而非false,所以条件判断逻辑错误。正确的case表达式写法如下:
Hash[String, String] $hashtest = { "abc" => "test1", "xyz" => "test2" } String $key = "some_key" String $result = $hashtest[$key] ? { undef => "test", default => $hashtest[$key] }
或者更精简的写法:
String $result = $hashtest[$key] ? { default => $_, undef => "test" }
3. if else条件语句实现(备选方案)
如果需要兼容较低版本的Puppet,也可以用if else实现:
Hash[String, String] $hashtest = { "abc" => "test1", "xyz" => "test2" } String $key = "some_key" String $result = if $hashtest.key($key) { $hashtest[$key] } else { "test" }
内容的提问来源于stack exchange,提问作者anonymous user
相关产品推荐
相关产品推荐

