Как исправить "не может преобразовать строку в целое число" после вызова функции разделения в кукольном? - PullRequest
0 голосов
/ 05 декабря 2011

как исправить следующий код?

$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}" )

У меня Debian Squeeze работает со стабильным пакетом puppet 2.6.2-5 + squeeze3. Puppetmaster также стабильно работает в Debian 2.6.2-5 + squeeze3

.

вопрос "вырван" из "реальной" проблемы, я пытаюсь запустить и запустить модуль duritong shorewall (https://github.com/duritong/puppet-shorewall)

там shorewall :: запись завершается с сообщением:

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]}",
    }
}

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Похоже, вы сталкиваетесь с Проблема кукол # 5127 , и проблема в разыменовании массива вместо функции разделения.

Исправление заключается в обновлении по крайней мере докукольная версия 2.6.3.

0 голосов
/ 05 декабря 2011

В основном, split("some-text", "-") эквивалентно $_.split("some-text", "-"). Результат зависит от значения $_, которое содержит последнюю строку, прочитанную get. Что вы, вероятно, хотите сделать, это "some-text".split("-"), что приводит к ["some", "text"].

...