我想在 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 的这种多行输出,请告诉我。
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/)