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"で壊れます
Gary van der Merwe

puppet 4を使用すると、これにより警告が発生します。警告:文字列 '1'は...で自動的に数値1に強制
変換さ

Puppetのドキュメントはこれを示唆しており、抽出対ピア強制を処理するscanfメソッドを提供します。 puppet.com/docs/puppet/latest/...
cgseller

3

stdlibでscanf関数を使用することにしました。

この例:

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

これにはパペットが必要です> = 3.7.5


1
これは配列を返すことに注意してください。最初の要素は希望の値です。パペット4ではscanf(...)[0]のようなものを書くことができます、パペット3ではこれを2つのステートメントに分割する必要があるようです:最初に配列変数に割り当て、次に最初の要素を取得します。
Slaven Rezic

これは、puppetのドキュメント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、2012年

2
Puppetは、値がhieraから来ている場合はそれを行いません。「サーバーでエラー400:Fixnumと文字列の比較に失敗しました」というエラーが表示されます。
ロブ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.