2017-06-29 53 views
0

我想存儲在紅寶石的多行輸出,我不能得到確切的方式。存儲多行輸出紅寶石返回從鏤空

下面是我用例:

我在Ruby中運行shell命令如下:

files = Mixlib::ShellOut.new('lsblk -o -d name --noheadings').run_command.stdout.split (/\n/) 
puts "files value is '#{files}' 

在這裏,在外殼的lsblk命令給出兩行, 「vda和vdb」爲 輸出,但是當在ruby中運行時,它僅顯示第一個值,即vda

請讓我知道如果我在這裏失去了一些東西,或者它應該像我應該使用一些其他結構來從shell中保存這樣的多行輸出。

+0

_Sidenote:_ **從不**在函數/方法名稱和括號之間放置一個空格。 – mudasobwa

+0

您運行的命令是否格式錯誤?當我執行'#lsblk -o --noheadings'時,我得到'lsblk:未知列:--noheadings' – Jakir00

+0

根據建議更新了代碼..仍然沒有運氣..am我錯過了某些東西..任何幫助都會真的很感激.. –

回答

0

1)修復你的命令。 lsblk -o --noheadings回報lsblk: unknown column: --noheadings

2)使用split()strip()

3)務必使用雙引號串內插值。更改puts 'files value is #{files}'puts "files value is #{files}"

的工作的例子是:

files = Mixlib::ShellOut.new('lsblk').run_command.stdout.split(/\n/) 
puts "files value is #{files}" 

附:我喜歡在匹配新行而不是字符串時使用正則表達式。例如split(/\n/)