2015-11-11 15 views
0

我想動態地計算內存來設置sysctl值。我db.erb模板包含:爲什麼我的Puppet模板返回true而不是awk的輸出?

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

,但它只是打印true在最終輸出。如果我運行在irb外殼下面的命令,將工作:

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

回答

1

你誤會什麼Kernel#system一樣。該文檔非常清楚它返回的內容:

如果命令給出零退出狀態,則系統返回true,非零退出狀態爲false。如果命令執行失敗,則返回nil。

如果你想你的命令,而不是系統方法的返回值的輸出插入到您的模板,那麼你要使用反引號或%X來代替。例如:

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

這就是我一直在尋找的!大!!! – Satish

+0

我正在嘗試下面,但它不執行'awk'操作,爲什麼? '$ hugepage = inline_template(「<%=''grep Hugepagesize/proc/meminfo | awk'{print $ 2}'''%>」)' – Satish

+0

@Satish 1)您在問另一個問題。 2)你爲什麼加倍反引號?這不太可能做任何有用的事情。 –

相關問題