2012-02-10 129 views
7

我正在使用pry,我想捕獲並使用shell命令的輸出。如何捕獲pry shell命令的輸出?

例如,如果我運行

pry(main)> .ls 

我想獲得的文件列表到一個數組,我可以在Ruby中一起工作。

我該怎麼做?

回答

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 
2

我以爲這是某種撬的魔術;-)

後快速瀏覽一下發生了什麼(我沒看撬的源代碼),你可能想用這個:

`ls`.split("\n") 

Dir['./*'] 

什麼好的這個解決方案是,它會在外面工作的pry