在从 Shellout 返回的 Ruby 中存储多行输出



我想在 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/)

最新更新