我正在使用pry,我想捕獲並使用shell命令的輸出。如何捕獲pry shell命令的輸出?
例如,如果我運行
pry(main)> .ls
我想獲得的文件列表到一個數組,我可以在Ruby中一起工作。
我該怎麼做?
我正在使用pry,我想捕獲並使用shell命令的輸出。如何捕獲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
我以爲這是某種撬的魔術;-)
後快速瀏覽一下發生了什麼(我沒看撬的源代碼),你可能想用這個:
`ls`.split("\n")
或
Dir['./*']
什麼好的這個解決方案是,它會在外面工作的pry