2012-10-01 33 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