Ruby:如何从Bash脚本运行脚本?

5
我正在尝试从bash脚本中调用一个Ruby脚本,但是没有成功。
#!/bin/bash
ruby -v

这个功能完全正常,所以我知道问题不在Ruby上,但是

#!/bin/bash
ruby bash_test.rb

不是这样的。有趣的部分来了:
john@starfire:~/Desktop$ bash ubuntu_cmds.sh
(LoadError)h file or directory -- bash_test.rb
john@starfire:~/Desktop$ ls *.rb
bash_test.rb

这两个文件都在我的桌面上。

ruby bash_test.rb

这个也可以正常工作。

我对bash脚本编写很新,所以我相信我只是犯了一个愚蠢的错误。

我正在运行Ubuntu 10.10和Ruby 1.8.7。提前感谢任何帮助或建议。

编辑:删除了.sh和.rb文件并重新开始,确保chmod +x .sh,并且第一次尝试就成功了。我不知道为什么。不过还是谢谢你的帮助。


请查看我的编辑;格式化代码块的最佳方法是将它们缩进4个空格,或选择它们并按下{}按钮。 - user229044
啊,谢谢...这样好多了。我很感激。 - eckza
1
为了那些正在寻找键盘上的“{}”按钮的人,@meagar指的是问题编辑器上方的图标。 - Andrew Grimm
3个回答

4

尝试

#!/bin/bash
ruby ~/Desktop/bash_test.rb

(加载错误)h文件或目录--/home/john/Desktop/bash_test.rb:P应该已经提到了,我已经尝试过了。 - eckza

3
你的bash脚本文件名后面有回车符吗?
已编辑 请仔细检查在bash脚本中如何将文件名传递给ruby。
如果找不到该文件,错误输出应该如下所示:
ruby: No such file or directory -- bash_test.rb (LoadError)
从您显示的错误信息来看,似乎Ruby将回车符视为文件名的一部分,因此您会得到以下错误输出。
(LoadError)h file or directory -- bash_test.rb

1
@kivetros:不是“你做”,而是“你要做”。对你的脚本运行dos2unix命令。 - Dennis Williamson
最终我只是删除了脚本和.rb文件,重新开始...奇怪的是,两者在第一次尝试时都运行得很好。不过dos2unix真的很棒,谢谢你提供这个提示。 - eckza

3

有时候 . 不在你的 $PATH 中,因此你可能需要执行 ruby ./bash_test.rb


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接