gpt4 book ai didi

ruby - puppet inline_template 忽略 awk

转载 作者:太空宇宙 更新时间:2023-11-04 10:44:26 26 4
gpt4 key购买 nike

我在 puppet 中有以下代码,当我运行它时忽略 awk 过滤器 但是 如果我使用 cut -d ' ' -f8它有效!

$hugepage=inline_template("<%= `grep Hugepagesize /proc/meminfo | awk '{print $2}'` %>")
notify {"Variable testing, hugepage size is ${hugepage}":}

结果如下:

Notice: /Stage[main]/Sysctl::Pgsql/Notify[Variable testing, hugepage size is Hugepagesize:       2048 kB

为什么打印 Hugepagesize: 2048 kB?看起来 awk 不工作:(

irb shell 上正常工作。

irb(main):002:0> `grep Hugepagesize /proc/meminfo | awk '{print $2}'`
=> "2048\n"

更新

我也尝试了以下但结果相同:(

$hugepage = generate("/bin/sh","-c", "/bin/grep Hugepagesize /proc/meminfo | /bin/awk '{print $2}'")

最佳答案

您正在将引号分隔的字符串传递给 inline_template()generate()。 Puppet 将插入它在其中找到的变量引用;特别是,它将插入变量 $2 的值。假设该变量未定义,将插入一个空字符串。结果与

$hugepage=inline_template("<%= `grep Hugepagesize /proc/meminfo | awk '{print }'` %>")

这正是您所观察到的。为避免这种情况,您可以对 $ 进行转义,或者您可以将最外面的引号更改为撇号(要求您对内部的撇号做一些处理)。我可能会选择前者:

$hugepage=inline_template("<%= `grep Hugepagesize /proc/meminfo | awk '{print \$2}'` %>")

关于ruby - puppet inline_template 忽略 awk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com