1

所以,我做了一个简单的红宝石脚本,

#!/usr/bin/env ruby

puts "Hello!"

当我尝试在终端中运行它时,它不会输入“你好!” 屏幕上。我试过输入chmod +x test.rbtest.rb是我的文件名)。当我运行它时,它不会给我一个错误,它只是不显示“你好!”。任何帮助都感激不尽。我到处寻找可能的答案,但到目前为止我一无所获。

4

2 回答 2

2

我猜你正试图test像这样运行它:

$ test

但是是一个不产生任何输出test的 bash 内置命令,它只是设置一个返回值。如果您正确运行脚本:

$ ./test.rb

然后你会看到一些东西。请注意显式./路径,当前目录很少(希望永远不会)在您的目录中,PATH因此您需要说./要在当前目录中运行某些内容(当然,除非您在/bin,/usr/bin等)。


Ctrl+M在评论中,您说脚本中有一些字符:

$ cat -e test.rb
#!/usr/bin/env ruby^M^Mputs "Hello!"

$在该输出中看不到任何 s ,cat -e因此您没有任何实际的行尾标记,只有一些回车字符(即^M)。单个 CR 是旧的 MacOS 行尾,Windows 使用 CR-LF 对,而 Unix(包括 OSX)仅使用单个 LF 来标记文本行的结尾。由于您没有任何 EOL,因此 shell 只看到一行如下所示:

#!/usr/bin/env ruby ...

如果没有要运行的实际脚本ruby,shell 只会看到 shebang 注释,而没有其他任何内容。结果是当您运行脚本时没有任何明显的事情发生。修复您的 EOL,您的脚本将开始正常工作。您可能还想查看编辑器的设置,以便它开始编写正确的 EOL。

于 2013-09-09T19:31:55.803 回答
0

你怎么称呼这个方法。ruby test.rb如果您在 test.rb 文件所在的目录中,您可能想通过类似的方式来调用它。尝试一些不起作用的东西的另一个一般提示是在命令行上进入 irb 并尝试你的程序,比如puts "Hello!看看是否是那个特定的代码是问题所在。

于 2013-09-09T19:10:33.320 回答