【问题标题】:How to run a command on windows using Ruby如何使用 Ruby 在 Windows 上运行命令
【发布时间】:2018-11-17 11:51:48
【问题描述】:

我使用了一些来自 github 的代码,用于处理代码的测试和编译。其中有一个对 Ceedling 可用的命令的扩展(我将使用的测试工具),它在一个名为“rakefile.rb”的文件中使用 Ruby。

我正在尝试运行以下命令:

desc "Convert the output binary to a hex file"
task :convert => :release do
  cmd = "\"C:/Program Files (x86)/Microchip/xc16/v1.23/bin\"\\\\xc16-bin2hex ./build/release/Output.elf -a -omf=elf"
  puts "Generating Output.hex..."
  puts cmd
  sh cmd
end

如果我将下面的代码放入我的“使用 Ruby 启动命令提示符”程序中,那么输出是正确的并采取了措施:

"C:/Program Files (x86)/Microchip/xc16/v1.23/bin"\\xc16-bin2hex ./build/release/Output.elf -a -omf=elf

如果我不包含 \" 和 \'s,那么程序将无法运行。

目前我得到了输出:

Generating Output.hex...
"C:/Program Files (x86)/Microchip/xc16/v1.23/bin"\\xc16-bin2hex ./build/release/Output.elf -a -omf=elf
rake aborted!
Command failed with status (127): ["C:/Program Files (x86)/Microchip/xc16/v1....]
rakefile.rb:16:in `block in <top (required)>'
C:/Ruby24-x64/bin/ceedling:23:in `load'
C:/Ruby24-x64/bin/ceedling:23:in `<main>'
Tasks: TOP => convert
(See full trace by running task with --trace)

我做错了什么,在哪里可以阅读更多关于 Ruby 基础知识的信息?

【问题讨论】:

  • 第一步是使用--trace 标志运行它,如错误消息所示。如果我不得不猜测,我会说这是文件路径和转义字符的问题,即正斜杠与反斜杠
  • windows的文件路径不应该使用反斜杠吗?即C:\Program Files (x86)\Microchip\xc16\v1.23\bin 或者您使用的是cygwin 还是其他一些unix 之类的终端?
  • 如何使用跟踪工具?我已经尝试过 Ceedling convert --trace 及其所有组合,但无法识别使用反斜杠也对输出没有影响。我在 Ruby 中使用命令提示符
  • 我不确定 Ceedling 是什么,但这看起来像是一个 rake 任务,所以如果你不使用 bundler,我会使用 bundle exec rake $your_task_name --trace 或删除 bundle exec 部分
  • Ceedling 确实使用了耙子。我得到“exec 不被识别为内部或外部命令、可运行程序或批处理文件”它找不到捆绑包

标签: ruby


【解决方案1】:

从您在聊天中发布的错误看来,根本问题是找不到 sh 的 rake 任务,
这是一个运行 linux shell 脚本语言的可执行文件。

我想说最简单的选择是要么

  1. 通过 cygwinmingw 或 gitbash 在 Windows 上安装 sh(参见 this answer

  2. 在虚拟机或容器上运行 linux

【讨论】:

    猜你喜欢
    • 2012-03-21
    • 2013-10-31
    • 1970-01-01
    • 2013-09-13
    • 2014-01-16
    • 2019-10-04
    • 2018-04-07
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多