如何通过Ruby中的脚本输入输入来获取功能

时间:2011-07-06 16:25:03

标签: ruby

每当调用gets时,有没有办法通过脚本本身输入输入,而不是在Windows中手动输入?

例如:

puts "enter your choice"
ch=gets                           
puts ch

在上面的脚本中调用gets时,有没有命令通过windows中的脚本输入输入?

提前致谢。

2 个答案:

答案 0 :(得分:1)

1)如果要在调用脚本时向STDIN提供外部输入

假设您的gets命令位于名为prog.rb的文件中。如果您想在运行prog.rb时向STDIN提供一些固定输入,可以使用命令行中的管道运行它:

echo "My input to gets" | ruby prog.rb

这将输出

enter your choice
My input to gets
在shell中

,无需人工干预。

2)从同一个脚本中提供STDIN的示例:

class MyIO
  def gets
    "1\n"
  end
end

$stdin = MyIO.new
puts "enter your choice"
ch=gets                           
puts ch # => 1

答案 1 :(得分:1)

gets函数只是从$stdin读取,因此您只需打开一个新的FileStringIO进行阅读,然后将其分配给$stdin }。

例如,如果您有一个名为pancakes.txt的文件并执行此操作:

$stdin = File.new('pancakes.txt', 'r')
puts gets

然后你会在标准输出上看到pancakes.txt的第一行。