退出ruby中的程序

时间:2012-01-31 18:11:34

标签: ruby unix

我正在用ruby编写一些代码,我想在程序启动之前测试命令的存在。如果未安装该命令,我想显示错误消息并退出程序。所以现在,我正在这样做。

 puts `type -P spark &>/dev/null && continue || { echo "You must install spark"; exit 0; } `

所以,一切正常,但是,“退出0”不是,我无法弄清楚原因。 你有什么想法解决这个问题吗?或者甚至更好,还有另一种方法吗?

2 个答案:

答案 0 :(得分:3)

您没有退出脚本的原因是退出调用是在反引号内。它正在退出调用运行spark的子shell,但这不是解释ruby脚本的过程。

你可以查看$的内容吗?变量,在命令运行后返回Process:backtick命令的状态。

然而,正如Daniel Pittman建议的那样,使用像FileTest这样的东西来检查可执行文件是否更容易。但是,您可能希望将其与返回值的测试结合起来,以防发生其他更复杂的故障。

答案 1 :(得分:2)

更好的方法是:

ENV["PATH"].split(':').any? {|x| FileTest.executable? "#{x}/spark" }

尝试获取完整路径的季节,或使用File.join构建路径或平台路径分隔符等等。