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

将shell命令输出存储到ruby变量或chef,ruby,chef-infra,cookbook,Ruby,Chef Infra,Cookbook,嗨,我想把shell命令的输出存储到chef变量中。我看到了一些方法,但不知道如何去做 这是我到目前为止所做的尝试 current_version = `#{node['kayako_nginx']['prefix']}/sbin/nginx -v | grep -Po "(\d+\.\d+\.\d+)"` print "cheking version of nginx #{current_version}" 它正在执行命令,但不存储该命令 这是执行chef时的输出 nginx

嗨,我想把shell命令的输出存储到chef变量中。我看到了一些方法,但不知道如何去做

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

    current_version = `#{node['kayako_nginx']['prefix']}/sbin/nginx -v | grep -Po "(\d+\.\d+\.\d+)"`
  print "cheking version of nginx  #{current_version}"
它正在执行命令,但不存储该命令

这是执行chef时的输出

 nginx version: nginx/1.5.3
cheking version of nginx  

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

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+"`
“商店”是什么意思?您正在尝试获取nginx的版本吗?这应该通过nginx-ohai插件公开。