将 shell 命令的输出逐行捕获到数组中

Eri*_*cis 3 ruby shell stdout ruby-on-rails rubocop

我想捕获 rubocop 攻击的总数,以确定我的代码库是变得更好还是更糟。我几乎没有使用 ruby​​ 脚本编写的经验。

到目前为止,这是我的脚本:

#!/usr/bin/env ruby
#script/code_coverage

var = `rubocop ../ -f fuubar -o ../coverage/rubocop_results.txt -f offenses`
puts var
Run Code Online (Sandbox Code Playgroud)

所以我./rails-app/script/code_coverage和我的终端显示

...
--
6844  Total
Run Code Online (Sandbox Code Playgroud)

当我var.inspect得到一个长字符串时。我想rubocop ../ -f ...逐行读取输出(首选)或将每一行输出捕获到数组中。

我希望能够做这样的事情:

var.each |line| do
  if line.contains('total')
    ...
    total = ...
end
Run Code Online (Sandbox Code Playgroud)

这可能吗?我想这类似于将输出写入文件,然后逐行读取文件。

Anu*_*ani 5

如果你想保持简单,你可以简单地拆分你的var字符串。

var = `rubocop ../ -f fuubar -o ../coverage/rubocop_results.txt -f offenses`.split("\n")
Run Code Online (Sandbox Code Playgroud)

然后你可以var像你想要的那样迭代。