使用Ruby启动命令提示符并不起作用

时间:2017-10-23 16:44:09

标签: ruby

我无法在Windows上使用Ruby的Start Command Prompt工作。 我有这个简单的程序:

puts "Whats your name?"
name = gets
puts "Hello" + name + ". How are you?"

但如果我用" ruby​​ program.rb"来调用它,而不是等待我的输入,它只是打印出来:

Whats your name?
Helloputs "Whats your name?"
. How are you?

就像"得到"命令未被识别。为什么会这样?

3 个答案:

答案 0 :(得分:3)

看起来你(在某种程度上)在命令行上传递了你的程序名两次。运行时,您描述的行为是可重现的

ruby program.rb program.rb

这样做的方式与gets在所有情况下都不会从STDIN读取的方式相同。相反,它更喜欢首先读取命令行中提到的文件。仅当命令行中没有其他文件时,gets才会回退到STDIN

遗憾的是,关于为什么要将ruby程序的文件名传递twi次的问题不太清楚。如果您不是自己调用它,这可能是由shell中的一些奇怪的环境选项或Ruby设置引起的。

答案 1 :(得分:1)

我也很好奇,发现了这个链接How does gets and gets.chomp in ruby work? 显然它创建了一个新行,因此无法找到名称。

这似乎有效,(按照链接中的说明)

puts "Whats your name?"
name = gets
puts "Hello " + name.chomp + ". How are you?"

玩得开心。

此外,如果您开始使用rails,您也可以在控制台中进行测试  示例

> def test1 
>     ...code .. 
> end  

> test1 

答案 2 :(得分:1)

@Ray Ban我使用了你的代码

puts "Whats your name?"
name = gets
puts "Hello" + name + ". How are you?"

在gets.rb文件中并使用$ ruby​​ gets.rb运行它并按预期工作。

我正在使用ruby-2.3.0