【问题标题】:Ruby's ARGV can be empty on windows depending on a way to run scriptRuby 的 ARGV 在 Windows 上可能为空,具体取决于运行脚本的方式
【发布时间】:2012-08-01 15:07:31
【问题描述】:

我的 demo.rb:

puts ARGV.size

ARGV.each do |a|
  puts "Argument: #{a}"
end

结果取决于我们如何运行脚本:

> demo.rb foo bar
0

> ruby demo.rb foo bar
2
Argument: foo
Argument: bar

为什么会这样?可以用这个做点什么吗?

编辑: 感谢所有回复!这是我的设置:

>assoc .rb
.rb=rbFile

>ftype rbFile
rbFile="c:\ruby-1.8.6\bin\ruby.exe" "%1" %*

所以看起来不错。

但我发现了

>demo.rb foo bar

使用这样的命令行启动进程:

"C:\ruby-1.8.7\bin\ruby.exe" "c:\demo.rb"

注意,.rb 与 1.8.6 关联,但 1.8.7 已启动。

所以我猜还有其他事情搞砸了?

【问题讨论】:

    标签: ruby argv


    【解决方案1】:

    打开一个命令窗口:

    assoc .rb
    

    是 rbFile 吗?

    ftype rbFile
    

    确保 Ruby.exe 后跟“%1”%*

    %* 有时会丢失。

    【讨论】:

      【解决方案2】:
      C:\Temp> ftype | grep 红宝石 rbFile="c:\opt\ruby\bin\ruby.exe" "%1" %* rbwFile="c:\opt\ruby\bin\rubyw.exe" "%1" %*

      【讨论】:

        【解决方案3】:

        检查文件关联。特别是在高级设置中查看“打开”操作。确保操作结束时有一个 %*。

        This 的问题是关于 powershell,但本质上是同一个问题,所以我的回答应该提供更多细节。

        【讨论】:

          【解决方案4】:

          在您的文件类型关联中,听起来参数没有传递给 ruby​​ 解释器。请参阅 this section 了解关联的外观,并验证您的关联。

          【讨论】:

            【解决方案5】:

            您可以使用来自Nirsoft - FileTypesManager 的免费软件工具来添加其他帖子中提到的缺失的%*

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-07-26
              • 2015-12-26
              • 1970-01-01
              • 1970-01-01
              • 2012-11-09
              • 1970-01-01
              • 1970-01-01
              • 2014-03-01
              相关资源
              最近更新 更多