我是一名使用Pry的IT技术人员,我想要捕获并处理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的一种魔法;-)
快速查看发生了什么(我没有查看pry的源代码),您可能想使用以下内容:
`ls`.split("\n")
或者
Dir['./*']
pry
之外运行。