将shell命令输出到ruby变量或chef

时间:2014-03-05 05:59:31

标签: ruby chef cookbook

您好我想将shell命令的输出存储到chef变量中。我已经看过某种方式,但却无法做到这一点。

这是我到目前为止所尝试的内容

    current_version = `#{node['kayako_nginx']['prefix']}/sbin/nginx -v | grep -Po "(\d+\.\d+\.\d+)"`
  print "cheking version of nginx  #{current_version}"

它正在执行命令但不存储它

这是执行厨师时的输出

 nginx version: nginx/1.5.3
cheking version of nginx  

1 个答案:

答案 0 :(得分:1)

很可能你的第一个字符串有问题。试试这个

current_version = `#{node['kayako_nginx']['prefix']}/sbin/nginx -v | grep -Eo "(\d+\.\d+\.\d+)"`

grep选项已更改为-Eo

没有括号的版本也应该起作用

current_version = `#{node['kayako_nginx']['prefix']}/sbin/nginx -v | grep -Eo "\d+\.\d+\.\d+"`