为什么我的Puppet模板返回true而不是awk的输出?

时间:2015-11-11 17:14:06

标签: ruby linux templates puppet erb

我想动态计算内存以设置sysctl值。我的db.erb模板包含:

hugepage = <%= system "grep Hugepagesize /proc/meminfo|awk '{print $2}'" %>

但它只是在最终输出中打印true。如果我在irb shell中运行以下命令,它将起作用:

[root@localhost templates]# irb
irb(main):001:0> system "grep Hugepagesize /proc/meminfo|awk '{print $2}'"
2048
=> true

1 个答案:

答案 0 :(得分:1)

你误解了Kernel#system的作用。文档非常清楚它返回的内容:

  如果命令给出零退出状态,则

系统返回true,对于非零退出状态,系统返回false。如果命令执行失败,则返回nil。

如果要将命令的输出而不是系统方法的返回值插入模板,则需要使用反引号或%x。例如:

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