Come convertire una stringa in intero in Puppet?


8

Voglio verificare se il contenuto di una variabile è un numero dispari. Ma ho bisogno di un numero intero per questo.

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

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

C'è un modo semplice per convertire una stringa in numero intero?

Risposte:


5

Puoi farlo:

$ n_timeout = 0 + $ timeout


Ciò si interrompe con punture con zeri iniziali, ad esempio "04"
Gary van der Merwe

Con il pupazzo 4 questo causerà un avvertimento: Avvertenza: la stringa '1' è stata forzata automaticamente al valore numerico 1 a ...
Slaven Rezic,

La documentazione sulle marionette suggerisce questo e offre un metodo scanf per gestire l'estrazione rispetto alla coercizione tra pari. puppet.com/docs/puppet/latest/…
cgseller

3

Ho iniziato ad usare la funzione scanf in stdlib.

Un esempio di questo:

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

Ciò richiede fantoccio> = 3.7.5


1
Si noti che questo restituirà un array, in cui il primo elemento è il valore desiderato. Nel pupazzo 4 è possibile scrivere qualcosa come scanf (...) [0], nel pupazzo 3 sembra che sia necessario dividere questo in due istruzioni: prima assegnare a una variabile di matrice, quindi ottenere il primo elemento.
Slaven Rezic,

Questo è accettabile anche in base alla documentazione fantoccio puppet.com/docs/puppet/latest/… . Sia il @barry sopra che le risposte qui sono consentite dai pupazzi.
cgseller

1

Il tuo codice funzionerà esattamente come definito; Puppet converte implicitamente stringhe e numeri interi come appropriato per l'operatore di confronto utilizzato.


Ho riscontrato il seguente errore: Impossibile trovare% in /etc/puppet/modules/my/manifests/target.pp:23 sul nodo mynode.domain.de
MMore

Se sostituisco '%' con '*' (testing) -> l'operando di sinistra di * non è un numero in /etc/puppet/modules/my/manifests/target.pp:25 sul nodo mynode.domain.de
MMore

1
Ah. Hai trovato un vero bug in Puppet. Dovresti presentare un ticket su projects.puppetlabs.com/projects/puppet/issues/new in modo che possiamo risolverlo.
Daniel Pittman,

2
Puppet non lo fa quando il valore viene da hiera. Viene visualizzato l'errore "Errore 400 su SERVER: confronto di Fixnum con stringa non riuscita".
Rob,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.