所以,我制作了一个简单的ruby脚本,
#!/usr/bin/env ruby
puts "Hello!"
当我尝试在终端中运行它时,它不会显示“你好!”屏幕上。我尝试输入chmod +x test.rb
(test.rb
是我文件的名称)。当我运行它时,它不会给我一个错误,它只是不显示“你好!”。任何帮助都感激不尽。我到处寻找可能的答案,到目前为止我什么都没找到。
答案 0 :(得分:2)
我猜你正试图像test
一样运行它:
$ test
但是test
is a bash builtin命令不产生任何输出,它只是设置一个返回值。如果您正确运行脚本:
$ ./test.rb
那时你会看到一些东西。注意明确的./
路径,当前目录很少(并且希望永远不会)在PATH
中,因此您需要说./
来运行当前目录中的某些内容(当然除非您'重新加入/bin
,/usr/bin
等。)
在评论中,您说脚本中有一些 Ctrl + M 字符:
$ cat -e test.rb
#!/usr/bin/env ruby^M^Mputs "Hello!"
我在$
输出中看不到任何cat -e
,因此您没有任何实际的行尾标记,只有一些回车字符(即{{1} }})。单个CR是旧的MacOS终端,Windows使用CR-LF对,而Unix(包括OSX)仅使用一个LF来标记文本行的结尾。由于您没有任何EOL,因此shell只会看到一行,如下所示:
^M
没有#!/usr/bin/env ruby ...
运行的实际脚本,shell只会看到shebang注释而没有别的。结果是,运行脚本时没有任何明显的结果。修复您的EOL,您的脚本将开始合理地工作。您可能还想查看编辑器的设置,以便开始编写正确的EOL。
答案 1 :(得分:0)
你是怎么称呼这种方法的?如果您在test.rb文件的目录中,您可能希望通过ruby test.rb
之类的方式调用它。另一个尝试不起作用的一般提示是在命令行进入irb并尝试你的程序,如puts "Hello!
,看看是否是特定代码是问题。