通过ruby文件确认可执行文件(脚本,bat,cmd,exe)的存在

src*_*der 3 ruby rake rakefile

使用ruby文件(或任何rake工具),我需要确定执行我的脚本的用户是否能够执行某些Shell命令。尤其是g ++等。希望与系统无关,因此,如果存在某些g ++。bat,g ++。exe或只是g ++(等),则只要在用户系统上的路径和可执行文件上都应该说是。

示例:如果用户具有该文件的无扩展名可执行文件版本和该文件的.cmd版本,则对于Linux系统上的no扩展名版本,应该说“是”,而对于Windows上的.cmd版本则应说“是”。系统。由于用户外壳程序只能执行该版本的文件。

这样做的目的是允许脚本进行自我配置(尽可能多)。

关于如何执行此操作的任何建议?

mae*_*ics 5

一种快速而肮脏的方法是简单地尝试通过system命令执行g ++ 并检查返回代码,例如:

def gpp_exists
  return system("g++ --version")
end
Run Code Online (Sandbox Code Playgroud)

您必须采取一些技巧,以避免在控制台上获得不必要的输出(例如,基于正确的OS语法重定向stdout / stderr),但这并不能太糟。