Ruby将字符串数组转换为字符串
我有一个ruby字符串数组值,我想把它作为字符串值。我用红宝石做厨师的食谱。在windows平台上运行。代码-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
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