Làm thế nào để chuyển đổi một chuỗi thành số nguyên trong Puppet?


8

Tôi muốn kiểm tra xem nội dung của một biến có phải là số lẻ hay không. Nhưng tôi cần một số nguyên cho nó.

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

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

Có một cách dễ dàng để chuyển đổi một chuỗi thành số nguyên?

Câu trả lời:


5

Bạn có thể làm được việc này:

$ n_timeout = 0 + $ thời gian chờ


Điều này phá vỡ với stings với số không hàng đầu, ví dụ "04"
Gary van der Merwe

Với con rối 4, điều này sẽ gây ra cảnh báo: Cảnh báo: Chuỗi '1' đã tự động bị ép buộc thành giá trị số 1 tại ...
Slaven Rezic

Tài liệu rối cho thấy điều này và đưa ra một phương pháp scanf để xử lý trích xuất so với ép buộc ngang hàng. Puppet.com/docs/puppet/latest/ từ
csseller

3

Tôi đã sử dụng chức năng scanf trong stdlib.

Một ví dụ về điều này:

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

Điều này đòi hỏi con rối> = 3.7.5


1
Lưu ý rằng điều này sẽ trả về một mảng, trong đó phần tử đầu tiên là giá trị mong muốn. Trong con rối 4 có thể viết một cái gì đó như scanf (...) [0], trong con rối 3 dường như bắt buộc phải chia phần này trong hai câu lệnh: đầu tiên gán cho một biến mảng, sau đó lấy phần tử đầu tiên.
Slaven Rezic

Điều này cũng được chấp nhận dựa trên tài liệu con rối Puppet.com/docs/puppet/latest/ . Cả @barry ở trên và câu trả lời ở đây đều được cho phép bởi múa rối.
Csseller

1

Mã của bạn sẽ hoạt động chính xác như được xác định; Con rối ngầm chuyển đổi các chuỗi và số nguyên cho phù hợp với toán tử so sánh đang được sử dụng.


Tôi đã gặp lỗi sau: Không thể khớp với% tại /etc/puppet/modules/my/manifests/target.pp:23 trên nút mynode.domain.de
MMore

Nếu tôi thay thế '%' bằng '*' (thử nghiệm) -> toán hạng bên trái của * không phải là số tại /etc/puppet/modules/my/manifests/target.pp:25 trên nút mynode.domain.de
MMore

1
Ah. Bạn đã tìm thấy một lỗi chính hãng trong Puppet. Bạn nên nộp một vé tại dự án.puppetlabs.com / projects / suppet /issues / new để chúng tôi có thể sửa nó.
Daniel Pittman

2
Con rối không làm điều đó khi giá trị đến từ hiera. Bạn nhận được lỗi "Lỗi 400 trên SERVER: so sánh Fixnum với Chuỗi không thành công".
Cướp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.