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?

Antworten:



3

Ich habe die Scanf- Funktion in stdlib verwendet.

Ein Beispiel dafür:

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

Dies erfordert Puppe> = 3.7.5


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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.