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

标签 ruby rake rakefile

使用 ruby​​ 文件(或任何 rake 工具)我需要查明执行我的脚本的用户是否能够执行某些 shell 命令。特别是 g++ 等。希望系统独立,所以如果有一些 g++.bat、g++.exe 或只是 g++(等)它应该说是,只要它在路径上并且在用户系统上可执行。

示例:如果用户有文件的无扩展可执行版本和文件的 .cmd 版本,则在 linux 系统上应该为无扩展版本说"is",为 .cmd 版本说"is"在Windows系统上。由于用户 shell 只能执行该版本的文件。

这样做的目的是让脚本能够 self 配置(尽可能)。

关于我如何去做这件事有什么建议吗?

最佳答案

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

def gpp_exists
  return system("g++ --version")
end

您必须采取一些技巧来避免在控制台上获得不需要的输出(例如,根据正确的操作系统语法重定向 stdout/stderr),但这不会太糟糕。

关于ruby - 通过 ruby​​ 文件确认可执行文件(脚本、bat、cmd、exe)的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969967/

相关文章:

ruby-on-rails - 如何在 rails 4 中使用 globalize 和 sunspot

ruby - 重构前置条件和后置条件

ruby-on-rails - 是否可以从 Thor 脚本中调用 Git 或其他命令行工具?

ruby-on-rails - 启动Rails环境时,有没有办法禁止Erubis打印 "** Erubis 2.6.5"?

sql - ActiveRecord 的意外行为包括

ruby-on-rails - 从 Rake 任务调用应用程序 Controller 函数

ruby-on-rails - 我如何在 rake 任务中强制使用 RAILS_ENV?

ruby - 用于在独立线程中运行服务器然后在任务完成时终止线程的 Rake 任务?

unit-testing - Ceedling 不创建 Rakefile

ruby-on-rails - Datamapper 未执行正确的查询