人偶 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}'` %>")
我在 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}'` %>")