7

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

例如,如果我运行

pry(main)> .ls

我想将文件列表放入可以在 Ruby 中使用的数组中。

我怎样才能做到这一点?

4

2 回答 2

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
于 2012-07-17T20:45:05.447 回答
3

我认为这是某种撬动的魔法;-)

在快速查看发生了什么之后(我没有查看 pry 的源代码),您可能想要使用它:

`ls`.split("\n")

或者

Dir['./*']

这个解决方案的好处是它可以在pry

于 2012-02-14T18:01:55.843 回答