人偶 inline_template 忽略 awk

puppet inline_template ignoring awk

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

$hugepage=inline_template("<%= `grep Hugepagesize /proc/meminfo | awk '{print }'` %>")
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 }'`
=> "2048\n"

更新

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

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

您正在将引号分隔的字符串传递给 inline_template()generate()。 Puppet 将插入它在其中找到的变量引用;特别是,它将插入变量 </code> 的值。假设该变量未定义,将插入一个空字符串。结果与 </p> 相同 <pre><code>$hugepage=inline_template("<%= `grep Hugepagesize /proc/meminfo | awk '{print }'` %>")

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

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