所以,我做了一个简单的红宝石脚本,
#!/usr/bin/env ruby
puts "Hello!"
当我尝试在终端中运行它时,它不会输入“你好!” 屏幕上。我试过输入chmod +x test.rb
(test.rb
是我的文件名)。当我运行它时,它不会给我一个错误,它只是不显示“你好!”。任何帮助都感激不尽。我到处寻找可能的答案,但到目前为止我一无所获。
我猜你正试图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。
你怎么称呼这个方法。ruby test.rb
如果您在 test.rb 文件所在的目录中,您可能想通过类似的方式来调用它。尝试一些不起作用的东西的另一个一般提示是在命令行上进入 irb 并尝试你的程序,比如puts "Hello!
看看是否是那个特定的代码是问题所在。