Como converter uma string para inteiro no Puppet?


8

Quero verificar se o conteúdo de uma variável é um número ímpar. Mas preciso de um número inteiro para isso.

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

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

Existe uma maneira fácil de converter uma string em número inteiro?

Respostas:


5

Você consegue fazer isso:

$ n_timeout = 0 + $ tempo limite


Isto quebra com picadas com zeros, por exemplo, "04"
Gary van der Merwe

Com fantoche 4 isso irá causar um aviso: Aviso: A string '1' foi automaticamente convertido para o valor numérico 1 na ...
Slaven Rezic

A documentação do Puppet sugere isso e oferece um método scanf para lidar com extração versus coerção entre pares. puppet.com/docs/puppet/latest/...
cgseller

3

Eu comecei a usar a função scanf no stdlib.

Um exemplo disso:

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

Isso requer fantoches> = 3.7.5


1
Observe que isso retornará uma matriz, onde o primeiro elemento é o valor desejado. No fantoche 4, é possível escrever algo como scanf (...) [0], no fantoche 3 parece ser necessário dividir isso em duas instruções: primeiro atribua a uma variável de matriz e depois obtenha o primeiro elemento.
Slaven Rezic

Isso também é aceitável com base na documentação do fantoche puppet.com/docs/puppet/latest/… . Tanto o @barry acima como as respostas aqui são permitidos pelos puppetlabs.
cgseller

1

Seu código funcionará exatamente como definido; Puppet converte implicitamente seqüências de caracteres e números inteiros, conforme apropriado para o operador de comparação que está sendo usado.


Eu recebi o seguinte erro: Não foi possível corresponder ao% em /etc/puppet/modules/my/manifests/target.pp:23 no nó mynode.domain.de
MMore

Se eu substituir '%' com '*' (testar) -> operando à esquerda de * não é um número no /etc/puppet/modules/my/manifests/target.pp:25 no nó mynode.domain.de
mmore

1
Ah Você encontrou um bug genuíno no Puppet. Você deve registrar um ticket em projects.puppetlabs.com/projects/puppet/issues/new para que possamos corrigi-lo.
Daniel Pittman

2
Puppet não faz isso quando o valor vem da hiera. Você recebe um erro "Erro 400 no servidor: comparação de Fixnum com String falhou".
Rob

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.