每当调用gets
时,是否有任何方法通过脚本本身输入输入,而不是在Windows中手动输入?如何通过红宝石脚本输入获取函数
例如:
puts "enter your choice"
ch=gets
puts ch
在上述脚本时gets
被调用时,是否有任何命令经由窗口脚本来输入输入到?
在此先感谢。
每当调用gets
时,是否有任何方法通过脚本本身输入输入,而不是在Windows中手动输入?如何通过红宝石脚本输入获取函数
例如:
puts "enter your choice"
ch=gets
puts ch
在上述脚本时gets
被调用时,是否有任何命令经由窗口脚本来输入输入到?
在此先感谢。
1)如果你想提供外部输入STDIN调用脚本时
比方说,你得到的命令是一个文件名为prog.rb.内
echo "My input to gets" | ruby prog.rb
这将输出
enter your choice
My input to gets
在shell:如果您想运行prog.rb时提供一些固定的输入STDIN,你可以使用管道从命令行运行无需人工干预。
2)从同一脚本中喂养STDIN一个例子:从$stdin
class MyIO
def gets
"1\n"
end
end
$stdin = MyIO.new
puts "enter your choice"
ch=gets
puts ch # => 1
上午在Windows上工作,所以我有一个要求,如果在执行几个步骤后运行红宝石脚本,它会要求输入选择, – madhu
对不起,上述评论是不完整的,所以我在这里写。我在Windows上工作,所以我有一个要求,如果在执行几个步骤后运行ruby脚本,它会要求输入选择,例如:puts“输入您的选择”选项=获取,所以在选择=获取行脚本将要求用户输入选择,我想通过脚本本身始终输入值“1”,而不询问用户。我想在脚本已经运行时通过脚本通过一些变量来提供这个输入。 – madhu
@madhu:Windows可能会要求MyIO#返回“1 \ r \ n”。我无法证实这一点,我现在没有Windows机器。 – emboss
的gets
功能只是读取因此,所有你需要做的就是打开一个新的File
或StringIO
阅读,然后分配给它到$stdin
。
例如,如果您有一个名为pancakes.txt
文件,你这样做:
$stdin = File.new('pancakes.txt', 'r')
puts gets
然后你就会看到在标准输出的pancakes.txt
第一线。
在Windows上工作,所以我有一个要求,当我在执行几个步骤后运行ruby脚本时,它会要求输入选择,例如:puts“输入您的选择”选择=获取,所以在选择=获取行脚本将要求用户输入选择,我一直想通过脚本本身输入值“1”,而不询问用户。我想在脚本已经运行时通过脚本通过一些变量来提供这个输入。 – madhu
@madhu:然后用所需的响应实例化一个StringIO(用换行符分隔)并将其分配给'$ stdin'。然后'gets'将从你的字符串中读取,而不是询问用户。 –
从同一个程序或另一个? – Dogbert