正在退出ruby中的程序



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

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

所以,一切都很好,但是,"退出0"不是,我不明白为什么。你有什么办法解决这个问题吗?或者更好的是,还有其他方法吗?

您没有退出脚本的原因是对退出的调用在backticks中。它正在退出为运行spark而调用的子shell,但这不是解释ruby脚本的过程。

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

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

更好的方法是:

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

调味以获取完整路径,或者使用File.join构建路径,或者平台路径分隔符,或者其他什么。

最新更新