0

如何修复以下代码?

$parts = split('test-test','-')
notice( $parts[0] )

见:http ://docs.puppetlabs.com/references/2.6.8/function.html#split

对我来说,它会导致以下错误:

can't convert String into Integer at ....:2

尝试使用以下方法修复它:

notice( ${parts[0]} )
notice( "${parts[0]}" )

使用以下命令我现在得到错误,但也没有输出

notice( "${parts}" )

我用它的稳定 puppet 包 2.6.2-5+squeeze3 puppetmaster 运行 debian squeeze 也是 debian stable 2.6.2-5+squeeze3

问题是从“真实”问题中“剔除”出来的,我正在尝试启动并运行 duritongshorewall 模块(https://github.com/duritong/puppet-shorewall)

那里的shorewall::entry 失败并显示以下消息:

err: Could not retrieve catalog from remote server: Error 400 on SERVER: 
can't convert String into Integer at 
/etc/puppet/modules/shorewall/manifests/entry.pp:9 on node

完整代码

define shorewall::entry(
    $ensure = present,
    $line
){
    $parts = split($name,'-')

    concat::fragment{$name:
        ensure => $ensure,
        content => "${line}\n",
        order => $parts[1],
        target => "/etc/shorewall/puppet/${parts[0]}",
    }
}
4

2 回答 2

1

看起来您遇到了Puppet 问题 #5127,问题出在数组取消引用而不是 split 函数上。

修复方法是至少升级到 puppet 版本 2.6.3。

于 2011-12-14T00:57:39.703 回答
0

基本上split("some-text", "-")相当于$_.split("some-text", "-"). 结果取决于 的值$_,该值包含gets 读取的最后一个字符串。您可能想要做的是"some-text".split("-"),这会导致["some", "text"].

于 2011-12-05T08:35:47.043 回答