我正在使用 pry,我想捕获并使用 shell 命令的输出。
例如,如果我运行
pry(main)> .ls
我想将文件列表放入可以在 Ruby 中使用的数组中。
我怎样才能做到这一点?
这是一个很老的问题,但无论如何我都会回答。从 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
我认为这是某种撬动的魔法;-)
在快速查看发生了什么之后(我没有查看 pry 的源代码),您可能想要使用它:
`ls`.split("\n")
或者
Dir['./*']
这个解决方案的好处是它可以在pry