为什么赢了';我的Ruby脚本不能执行吗?

为什么赢了';我的Ruby脚本不能执行吗?,ruby,bash,shebang,env,Ruby,Bash,Shebang,Env,所以,我制作了一个简单的ruby脚本 #!/usr/bin/env ruby puts "Hello!" 当我尝试在终端中运行它时,它不会在屏幕上显示“Hello!”。我已尝试输入chmod+x test.rb(test.rb是我的文件名)。当我运行它时,它不会给我一个错误,它只是不会显示“Hello!”。任何帮助都将不胜感激。我到处寻找一个可能的答案,到目前为止我什么也没找到。你怎么称呼这个方法。如果您在test.rb文件所在的目录中,您可能希望通过类似于ruby test.rb的方式调用

所以,我制作了一个简单的ruby脚本

#!/usr/bin/env ruby

puts "Hello!"

当我尝试在终端中运行它时,它不会在屏幕上显示“Hello!”。我已尝试输入
chmod+x test.rb
test.rb
是我的文件名)。当我运行它时,它不会给我一个错误,它只是不会显示“Hello!”。任何帮助都将不胜感激。我到处寻找一个可能的答案,到目前为止我什么也没找到。

你怎么称呼这个方法。如果您在test.rb文件所在的目录中,您可能希望通过类似于
ruby test.rb的方式调用它。尝试不起作用的东西的另一个一般技巧是在命令行上进入irb并尝试您的程序,如
放入“Hello!
,查看是否是特定的代码出了问题。

我猜您正在尝试将其作为
测试运行,如下所示:

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

$ ./test.rb
然后你会看到一些东西。注意显式的
/
路径,当前目录很少(希望永远不会)在你的
路径中,所以你需要说
/
在当前目录中运行一些东西(当然除非你在
/bin
/usr/bin
,等等)


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

$ cat -e test.rb
#!/usr/bin/env ruby^M^Mputs "Hello!"
我在
cat-e
输出中没有看到任何
$
字符,因此没有任何实际的行尾标记,只有一些回车字符(即
^M
)。单个CR是旧的MacOS行尾,Windows使用CR-LF对,Unix(包括OSX)仅使用一个LF标记文本行的结尾。由于没有任何EOL,shell只看到一行,如下所示:

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

如果没有一个真正的脚本来运行
ruby
,shell只会看到shebang注释,其他什么都看不到。结果是,在运行脚本时不会发生任何明显的事情。修复EOL后,脚本将开始正常工作。您可能还需要查看编辑器的设置,以便它开始编写正确的EOL。

对我来说。同样的代码。我用
/test.rb
运行它。我的脚本保存在名为programs的文件夹中,名为test.rb。这是我的终端的副本:unknown20c9d0cc586f:programs carlosguillen$ruby test.rb unknown20c9d0cc586f:programs carlosguillen$。/test.rb,你可以看到,没有任何东西输出到屏幕上。该文件包含原始的scri这没有任何意义。你确定
test.rb
只包含你认为它包含的内容吗?你有没有用
cat-e test.rb
检查过任何奇怪的东西?谢谢你的回答。这是我输入cat-e test后得到的结果。rb:unknown20c9d0cc586f:programs carlosguillen$cat-e test.rb#!/usr/bin/env ruby^M^Mputs”你好“unknown20c9d0cc586f:程序carlosguillen$。程序中没有“^M^M”。