在运行Ruby脚本之后如何让system(...)返回一个字符串流作为输出?

时间:2016-10-12 06:22:30

标签: ruby

我正在编写一个ruby脚本,我正在使用命令

system('git log')

以及一些标记和格式设置首选项,以显示在回购中添加的每个文件的时间,修订ID和文件名。

如何将此命令的结果(即上面列出的每个文件的信息)作为单个字符串,一个用于在repo中添加的每个文件,然后将所有这些字符串放在一个数组中?

当前结果示例:

2016-10-11T22:07:06+01:00 b3d0893: example.txt
2016-10-11T22:06:06+01:00 b3d0893: example1.txt

我希望上面的内容是两个不同的字符串,然后将它们放在一个数组中。

1 个答案:

答案 0 :(得分:1)

Kernel#system只会返回truefalse,具体取决于通话是否成功。来自呼叫的STDOUT只是输出,因此您无法对其进行任何操作,正如您所发现的那样。

如果切换到使用backticks,则应该从命令中获得带有STDOUT的String

output = `git log`

要将该输出字符串拆分为Array行,请使用String#split,以便获得类似

的内容
output = `git log`
lines = output.split(/\n/)