Hey Rob,

variable interpolation in strings in ruby is actually done with
#{some_var}, so the following snippet

    #!/usr/bin/ruby

    "Hello World".match(/Hello (.*)/)

    puts $1
    puts "$1"
    puts "#{$1}

actually returns

    World
    $1
    World

As you can see "$1" does not interpolate to an earlier match.

On 10.01.2017 21:14, Rob Nelson wrote:
> At a guess, dollar signs inside double quotes interpolate, so it's
> extremely possible that somewhere earlier in the ruby run, $3 matched
> "Jan" somewhere and that was reused in your awk command. In the latter
> usage there's probably no $6 (that's a lot of matches!) or it amazingly
> has the value '$6'. I would definitely be more careful about escaping
> any dollars inside of double quoted strings that are passed to exec(),
> system(), or similar functions, as escaping that can be a nightmare when
> the stars align during your design but not weeks later during your usage.
> 
> On Tuesday, January 10, 2017 at 12:24:45 PM UTC-5, Denny wrote:
> 
>     Tried out another customfact "lastyumupdate" which looks like:
> 
>     |
>     Facter.add(:lastyumupdate) do
>       setcode do
>         Facter::Util::Resolution.exec("yum history |grep -E '^.*(Update|
>     U).*$' |head -n 1 |awk '{print $6}'")
>       end
>     end
>     |
> 
>     This one returns on command line "2017-01-10" AND sets the fact correct
> 
>     |
>     $ puppet facts |grep last
>         "lastrebootdate": "Jan",
>         "lastyumupdate": "2017-01-10",
>     |
> 
> 
>     Any help is appreciated :)
> 
> 
>     Denny
> 
>     Am Dienstag, 10. Januar 2017 17:47:36 UTC+1 schrieb Denny:
> 
>         PS: I'm running facter 3.5.0 with puppet 4.8.1 on CentOS 7
> 
> 
>         Am Dienstag, 10. Januar 2017 17:44:23 UTC+1 schrieb Denny:
> 
>             Hi there,
> 
>             probably a pretty easy to answer question.
> 
>             I want to try out adding custom facts. My first custom fact
>             should be "lastrebootdate"
> 
>             My code looks like this:
> 
>             |
>             Facter.add(:lastrebootdate) do
>               setcode do
>                 Facter::Util::Resolution.exec("/usr/bin/who -b |awk
>             '{print $3}'")
>               end
>             end
>             |
> 
>             Running the command on the system returns "2017-01-30"
> 
>             Deploying my fact on a puppet node and running the puppet
>             agent returns "Jan".
> 
>             |
>             $ puppet facts |grep lastrebootdate
>                 "lastrebootdate": "Jan",
>             |
> 
>             What did I miss?
> 
>             Thank you,
> 
>             Denny
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to puppet-users+unsubscr...@googlegroups.com
> <mailto:puppet-users+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/1fe52550-e656-415a-9197-a692d397c8bc%40googlegroups.com
> <https://groups.google.com/d/msgid/puppet-users/1fe52550-e656-415a-9197-a692d397c8bc%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/ccb700cd-6bf1-14dc-84cf-9b75d7181eca%40posteo.de.
For more options, visit https://groups.google.com/d/optout.

Reply via email to