Wie konvertiere ich eine Zeichenfolge in eine Ganzzahl in Puppet?

8

Ich möchte überprüfen, ob der Inhalt einer Variablen eine ungerade Zahl ist. Aber ich brauche eine ganze Zahl dafür.

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

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

Gibt es eine einfache Möglichkeit, einen String in eine Ganzzahl umzuwandeln?

Mehr
quelle

Antworten:

5

Du kannst das:

$ n_timeout = 0 + $ timeout

Barry
quelle
Dies bricht mit Stichen mit führenden Nullen, zB "04"
Gary van der Merwe
Bei Puppe 4 wird eine Warnung
ausgegeben
Die Puppet-Dokumentation schlägt dies vor und bietet eine Scan-Methode, um die Extraktion gegen Peer-Zwang zu handhaben. puppet.com/docs/puppet/latest/…
cgseller
3

Ich habe die Scanf- Funktion in stdlib verwendet.

Ein Beispiel dafür:

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

Dies erfordert Puppe> = 3.7.5

Andrew
quelle
1
Beachten Sie, dass dies ein Array zurückgibt, wobei das erste Element der gewünschte Wert ist. In Puppe 4 ist es möglich, so etwas wie scanf (...) [0] zu schreiben, in Puppe 3 scheint es erforderlich zu sein, dies in zwei Anweisungen aufzuteilen: zuerst einer Array-Variablen zuweisen, dann das erste Element erhalten.
Slaven Rezic
Dies ist auch akzeptabel, basierend auf der Puppendokumentation puppet.com/docs/puppet/latest/… . Sowohl das @ barry oben als auch die Antworten hier sind von Puppetlabs erlaubt.
Cgseller
1

Ihr Code funktioniert genau wie definiert. Puppet konvertiert implizit Zeichenfolgen und Ganzzahlen entsprechend dem verwendeten Vergleichsoperator.

Daniel Pittman
quelle
Ich habe die folgende Fehlermeldung erhalten:% konnte nicht mit /etc/puppet/modules/my/manifests/target.pp:23 auf dem Knoten mynode.domain.de übereinstimmen
MMore
Wenn ich '%' durch '*' ersetze (Testen) -> ist der linke Operand von * keine Zahl unter /etc/puppet/modules/my/manifests/target.pp:25 auf dem Knoten mynode.domain.de
MMore
1
Ah. Sie haben einen echten Fehler in Puppet gefunden. Sie sollten ein Ticket unter projects.puppetlabs.com/projects/puppet/issues/new einreichen, damit wir es beheben können.
Daniel Pittman
2
Puppet macht das nicht, wenn der Wert von hiera kommt. Sie erhalten den Fehler "Fehler 400 auf SERVER: Vergleich von Fixnum mit String fehlgeschlagen".
Rob