如何捕获pry shell命令的输出?

时间:2012-02-10 17:07:27

标签: ruby shell pry

我正在使用pry,我想捕获,并使用shell命令的输出。

例如,如果我运行

pry(main)> .ls

我想把文件列表放到一个可以在Ruby中使用的数组中。

我该怎么做?

2 个答案:

答案 0 :(得分:5)

这是一个非常古老的问题,但无论如何我都会回答它。从pry命令中获取数据有两种主要方法。第一个是命令将keep_retval选项设置为true,而shell命令则不是。第二,是使用虚拟管道。在您的示例中,这可以完成:

fizz = []
.ls | {|listing| fizz = listing.split("\n")} # can also be written as
.ls do |listing|
  fizz = listing.split("\n")
end

答案 1 :(得分:3)

我认为这是某种狡猾的魔法; - )

在快速查看正在发生的事情后(我没有看到pry的来源),你可能想要使用它:

`ls`.split("\n")

Dir['./*']

这个解决方案的优点是它可以在pry

之外工作