我想在ruby中存储多行输出,但我无法确切地知道这一点。
以下是我的用例:
我在ruby中运行shell命令,如下所示:
files = Mixlib::ShellOut.new('lsblk -o -d name --noheadings').run_command.stdout.split (/\n/) puts "files value is '#{files}'
"
这里,shell中的
lsblk
命令给出了两行" vda和vdb"如 输出,但是当在ruby中运行时,它只显示第一个值,即vda
如果我在这里遗漏了某些东西,或者我应该使用其他一些结构来保存shell中的这种多行输出,请告诉我。
答案 0 :(得分: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}"
P.S。我喜欢在匹配新行而不是字符串时使用正则表达式。例如split(/\n/)