我有一个ruby字符串数组值,我希望将其作为字符串值。我正在使用红宝石与厨师食谱。在Windows平台上运行。代码 -
version_string = Mixlib::ShellOut.new('some.exe -version').run_command
Log.info(version.stdout.to_s)
extract_var = version_string.stdout.to_s.lines.grep(/ver/)
Log.info('version:'+ extract_var.to_s)
输出即将到来 -
version 530
[2016-06-08T07:03:49+00:00] INFO: version ["version 530\r\n"]
我想只提取530个字符串。
答案 0 :(得分:3)
很久以来没有看到自Rot:)
您可以使用一些Chef辅助方法和正则表达式来使这更容易。
output = shell_out!('saphostexec.exe -version', cwd: 'C:\\Program Files\\hostctrl\\exe').stdout
if output =~ /kernel release\s+(\d+)/
kernel_version = $1
else
raise "unable to parse kernel version"
end
Chef::Log.info(kernel_version)
答案 1 :(得分:2)
如您所愿val = 720
而不是val = "720"
,您可以写
val = strvar.first.to_i
#=> 720
答案 2 :(得分:0)
您可以使用String#[regexp]返回current_kernel
字符串中以整数形式找到的第一个数字系列:
current_kernel[/\d+/].to_i
#=> 720