如何在ruby中通过脚本输入gets函数的输入

如何在ruby中通过脚本输入gets函数的输入,ruby,Ruby,无论何时调用get,是否有办法通过脚本本身输入输入,而不是在windows中手动输入 例如: puts "enter your choice" ch=gets puts ch 在上面的脚本中,当调用get时,是否有任何命令可以通过windows中的脚本输入该脚本的输入 如果您想在调用脚本时向STDIN提供外部输入,请提前感谢。1) 假设gets命令位于名为prog.rb的文件中。如果希望在运行prog.rb时向STDIN提供一些固定输入,可

无论何时调用
get
,是否有办法通过脚本本身输入输入,而不是在windows中手动输入

例如:

puts "enter your choice"
ch=gets                           
puts ch
在上面的脚本中,当调用
get
时,是否有任何命令可以通过windows中的脚本输入该脚本的输入

如果您想在调用脚本时向STDIN提供外部输入,请提前感谢。

1)

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

echo "My input to gets" | ruby prog.rb
这将输出

enter your choice
My input to gets
在不需要手动干预的情况下在外壳中

2) 从同一脚本中馈送STDIN的示例:

class MyIO
  def gets
    "1\n"
  end
end

$stdin = MyIO.new
puts "enter your choice"
ch=gets                           
puts ch # => 1
该函数只需读取
$stdin
,因此您只需打开一个新的or进行读取,然后将其分配给
$stdin

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

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

然后,您将在标准输出上看到第一行
pancakes.txt

来自同一个程序或另一个程序?我在windows上工作,因此我有一个要求,当我在执行几个步骤后运行ruby脚本时,它将要求输入选项,很抱歉,上面的注释不完整,因此我在这里写下。我在windows上工作,所以我有一个要求,当我在执行了几个步骤后运行ruby脚本时,它会要求输入选项,例如:put“enter your choice”choice=get,因此在choice=get行,脚本会要求用户输入选项,我希望始终通过脚本本身输入值“1”,而不询问用户。我想在脚本已经运行时,通过脚本中的某个变量提供此输入。@madhu:Windows可能需要MyIO#get返回“1\r\n”。我不能确认这一点,我现在没有Windows机器。我在Windows上工作,所以我有一个要求,当我在执行几个步骤后运行ruby脚本时,它会要求输入choice,例如:put“enter your choice”choice=get,因此,在choice=gets行,脚本将要求用户输入选项,我希望始终通过脚本本身输入值“1”,而不要求用户输入。我想在脚本已经运行时,通过脚本中的某个变量提供此输入。@madhu:然后用所需的响应(用换行符分隔)实例化一个StringIO,并将其分配给
$stdin
。然后,
get
将从字符串中读取,而不是询问用户。