2016-06-08 149 views
-3

我有一個ruby字符串數組值,我想將它作爲字符串值。我使用紅寶石與廚師食譜。在Windows平臺上運行。代碼 -Ruby將字符串數組轉換爲字符串

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) 

輸出coming-

version   530  
[2016-06-08T07:03:49+00:00] INFO: version ["version    530\r\n"] 

我想只提取530串。

+0

你想字符串值或整數? – Ilya

+0

嗨@llya我已更新完整的代碼。請考慮一下。 –

+0

您是否看到[我的回答](http://stackoverflow.com/a/37610826/477037)最後一個問題? – Stefan

回答

2

當你想val = 720而不是val = "720"你可以寫

val = strvar.first.to_i 
    #=> 720 
+0

Hi @ cary-swoveland我已經更新了詳細的問題。請考慮一下。 –

+0

這解決了我的目的。 –

3

很長一段時間以來腐:)

沒有看到你可以使用一些廚師的輔助方法和正則表達式,使這個更容易一些。

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) 
+0

是的。不知何故,shell_out在windows系統中不起作用。不知道是否需要包含任何庫。 –

+0

這取決於你的廚師版本,你可以使用'include Chef :: Mixin :: ShellOut',但這已經在新版本中爲你完成了。 – coderanger

+0

當然諾亞。我會嘗試更新結果。 –

0

可以返回的第一個系列的數字發現作爲一個整數從current_kernelString#[regexp]

current_kernel[/\d+/].to_i 
    #=> 720