Как преобразовать строку в целое число в Puppet?


8

Я хочу проверить, является ли содержимое переменной нечетным числом. Но мне нужно целое число для этого.

$ip_array = split($ipaddress, '.')
$odd_ip = $ip_array[3] % 2

if $odd_ip == 1 {
  notice("is odd")
}

Есть ли простой способ преобразовать строку в целое число?

Ответы:


5

Ты можешь сделать это:

$ n_timeout = 0 + $ timeout


Это разрывается с укусами с ведущими нулями, например, «04»
Гэри ван дер Мерве

С куклой 4 это вызовет предупреждение: Предупреждение: строка '1' была автоматически приведена к числовому значению 1 в ...
Slaven Rezic

Документация Puppet предлагает это и предлагает метод scanf для обработки извлечения в сравнении с принуждением сверстников. puppet.com/docs/puppet/latest/...
cgseller

3

Я привык использовать функцию scanf в stdlib.

Пример этого:

$ ram = scanf ("$ {:: memorysize_mb}", "% i")

Это требует кукольный> = 3.7.5


1
Обратите внимание, что это вернет массив, где первый элемент является желаемым значением. В марионетке 4 можно написать что-то вроде scanf (...) [0], в марионетке 3 кажется необходимым разделить это на два оператора: сначала назначить переменную массива, а затем получить первый элемент.
Slaven Rezic

Это также допустимо на основе документации кукол puppet.com/docs/puppet/latest/… . Как @barry выше, так и ответы здесь разрешены puppetlabs.
cgseller

1

Ваш код будет работать точно так, как определено; Puppet неявно преобразует строки и целые числа в соответствии с используемым оператором сравнения.


Я получил следующую ошибку: Не удалось сопоставить% в /etc/puppet/modules/my/manifests/target.pp:23 на узле mynode.domain.de
MMore

Если я заменю «%» на «*» (тестирование) -> левый операнд * не является числом в /etc/puppet/modules/my/manifests/target.pp:25 на узле mynode.domain.de
MMore

1
Ах. Вы нашли настоящую ошибку в Puppet. Вы должны подать заявку по адресу projects.puppetlabs.com/projects/puppet/issues/new, чтобы мы могли это исправить.
Даниэль Питтман

2
Puppet не делает этого, когда ценность исходит от hiera. Появляется ошибка «Ошибка 400 на сервере SERVER: сравнение Fixnum с ошибкой строки».
Роб

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.