Bagaimana cara mengubah string menjadi integer di Puppet?


8

Saya ingin memeriksa apakah konten suatu variabel adalah angka ganjil. Tapi saya butuh integer untuk itu.

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

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

Apakah ada cara mudah untuk mengkonversi string ke integer?

Jawaban:


5

Kamu bisa melakukan ini:

$ n_timeout = 0 + $ timeout


Ini pecah dengan sengatan dengan nol di depan, misalnya "04"
Gary van der Merwe

Dengan boneka 4, ini akan menyebabkan peringatan: Peringatan: String '1' secara otomatis dipaksa ke nilai numerik 1 di ...
Slaven Rezic

Dokumentasi wayang menyarankan ini, dan menawarkan metode scanf untuk menangani ekstraksi versus paksaan rekan. puppet.com/docs/puppet/latest/…
cgseller

3

Saya telah menggunakan fungsi scanf di stdlib.

Contoh dari ini:

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

Ini membutuhkan boneka> = 3.7.5


1
Perhatikan bahwa ini akan mengembalikan array, di mana elemen pertama adalah nilai yang diinginkan. Dalam wayang 4 dimungkinkan untuk menulis sesuatu seperti scanf (...) [0], dalam wayang 3 tampaknya diperlukan untuk membagi ini dalam dua pernyataan: pertama tetapkan ke variabel array, kemudian dapatkan elemen pertama.
Slaven Rezic

Ini dapat diterima juga berdasarkan pada dokumentasi boneka puppet.com/docs/puppet/latest/… . @Barry di atas dan jawaban di sini diizinkan oleh puppetlabs.
cgseller

1

Kode Anda akan bekerja persis seperti yang didefinisikan; Wayang secara implisit mengubah string dan integer yang sesuai untuk operator perbandingan yang digunakan.


Saya mendapat kesalahan berikut: Tidak dapat mencocokkan% di /etc/puppet/modules/my/manifests/target.pp:23 pada node mynode.domain.de
MMore

Jika saya mengganti '%' dengan '*' (pengujian) -> operan kiri * bukan angka di /etc/puppet/modules/my/manifests/target.pp:25 pada node mynode.domain.de
MMore

1
Ah. Anda telah menemukan bug asli di Puppet. Anda harus mengajukan tiket di projects.puppetlabs.com/projects/puppet/issues/new sehingga kami dapat memperbaikinya.
Daniel Pittman

2
Wayang tidak melakukan itu ketika nilainya berasal dari hiera. Anda mendapatkan galat "Kesalahan 400 pada SERVER: perbandingan Fixnum dengan String gagal".
Rob

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.