Ruby将字符串数组转换为字符串

Ruby将字符串数组转换为字符串,ruby,chef-infra,chef-recipe,chef-solo,Ruby,Chef Infra,Chef Recipe,Chef Solo,我有一个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:'+ extr

我有一个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字符串。

如您所愿
val=720
而不是
val=“720”
您可以编写

val = strvar.first.to_i
  #=> 720

好久不见了,因为腐烂:)

您可以使用一些Chef helper方法和正则表达式来简化这一过程

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)

您可以返回从
当前\u内核
字符串中找到的作为整数的第一个数字序列,包括:


您想要字符串值或整数??Hi@llya我已经更新了完整的代码。请调查一下。你看到你的最后一个问题了吗?@Stefan我立即否决了这个问题,并删除了我的答案。你最初的问题很简单,但模棱两可。您说过“我只想得到字符串值-
val=720
only”。如果您编写了
val=“720”
,那么这将是一致的,但是您编写的
val=720
720
是一个整数,而不是字符串@伊利亚只是想知道
val
的值是字符串还是整数。你没有回答这个问题,而是添加了大量与厨师无关的颠簸。嗨@cary swoveland,我已经详细更新了这个问题。请调查一下。不知何故,shell_out在windows系统中不起作用。不确定是否需要包含任何库。这取决于您的Chef版本,您可以使用
include Chef::Mixin::ShellOut
,但在较新的版本中,这已经为您完成了。
current_kernel[/\d+/].to_i
  #=> 720