꼭두각시에서 문자열을 정수로 변환하는 방법은 무엇입니까?


8

변수의 내용이 홀수인지 확인하고 싶습니다. 그러나 정수가 필요합니다.

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

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

문자열을 정수로 변환하는 쉬운 방법이 있습니까?

답변:


5

당신은 이것을 할 수 있습니다 :

$ n_timeout = 0 + $ timeout


이것은 선행하는 0으로 찌르는 것과 충돌합니다. 예 : "04"
Gary van der Merwe

꼭두각시 4를 사용하면 다음과 같은 경고가 발생합니다. 경고 : 문자열 '1'이 (가) 자동으로 숫자 1로 강제 변환되었습니다.
Slaven Rezic

꼭두각시 문서는 이것을 제안하고 추출 대 피어 강제 변환을 처리하는 scanf 방법을 제공합니다. puppet.com/docs/puppet/latest/…
cgseller

3

stdlib 에서 scanf 함수 를 사용했습니다 .

이것의 예 :

$ 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은 사용중인 비교 연산자에 따라 문자열과 정수를 암시 적으로 변환합니다.


다음과 같은 오류가 발생했습니다. 노드 mynode.domain.de의 /etc/puppet/modules/my/manifests/target.pp:23에서 %를 일치시킬 수 없습니다.
MMore

'%'를 '*'(테스트)로 바꾸면-> 왼쪽 피연산자가 mynode.domain.de 노드의 /etc/puppet/modules/my/manifests/target.pp:25에있는 숫자가 아닙니다
MMore

1
아 Puppet에서 실제 버그를 발견했습니다. projects.puppetlabs.com/projects/puppet/issues/new에 티켓을 제출해야 문제를 해결할 수 있습니다.
Daniel Pittman

2
꼭두각시는 값이 hiera에서 올 때 그렇게하지 않습니다. "서버에서 오류 400 : 문자열과 Fixnum 비교 실패"오류가 발생합니다.
Rob

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.