2017-06-29 42 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/)