ruby capture input when using pipes
我有一个通过管道运行的脚本,它似乎不想捕获用户输入。
这是最简单的例子:
1 2
| echo"gets.chomp" | ruby
-:1: private method `chomp' called for nil:NilClass (NoMethodError) |
目标是确认操作(您确定要执行此操作吗?是/否:)。使用管道时如何捕获输入?
- 你想完成什么?给我们更广阔的前景。您正在将一个文本字符串"gets.chomp"从shell传递给Ruby解释器。
- @ MB。那么ruby -e"gets.chomp"呢?
- 我正在创建一个可以下载和执行的脚本。"卷曲某物。脚本的一部分需要确认。我想问用户:您确定要继续吗?是/否。他写"是"或"否",我检查回答。
- 你做错了。当你的外壳可以很容易地做到的时候,你不需要用Ruby来完成它。请参见"如何在bash脚本中提示用户确认?".
- 我想用红宝石做。
io.new stdin(io.sysopen美元=("/ dev / TTY,R,R))
- 谢谢。以下是我从thoughbot和stackexchange中找到的关于这个主题的一些信息性文章