2012-10-01 67 views
1

我有一個通過管道運行的腳本,它似乎不想捕獲用戶輸入。使用管道時ruby捕獲輸入

這是最簡單的例子:

echo "gets.chomp" | ruby 
-:1: private method `chomp' called for nil:NilClass (NoMethodError) 

的目標是確認操作(你確定你想這樣做,是/否?)。如何在使用管道時捕獲輸入?

+1

什麼是你想實現什麼?給我們更廣闊的畫面。你從你的shell傳入一個字符串「gets.chomp」給ruby解釋器。 –

+0

@MB。怎麼樣'紅寶石-e「gets.chomp」'? –

+0

我正在創建一個人可以下載和執行的腳本。 'curl http://something.rb |紅寶石'。部分腳本需要確認。我想問問用戶:你確定要繼續嗎?是/否。他寫了「是」或「否」,然後查看回復。 –

回答

1

$標準輸入= IO.new(IO.sysopen( '的/ dev/tty的', 'R'), 'R')

+0

感謝你們這裏有一些內容豐富的文章,我在[Whilebot](https://robots.thoughtbot.com/io- in-ruby)和[StackExchange](http://unix.stackexchange.com/questions/18239/understanding-dev-and-its-subdirs-and-files) – umezo