8

代码:

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

"*.*"如果我在调用上述内容时提供字符串(带或不带引号),则会得到以下输出:

  C:\test>test_argv *.*
  length: 5
  Argument: afile.TXT
  Argument: bfile.TXT
  Argument: cfile.TXT
  Argument: dfile.TXT
  Argument: somethingelse.TXT

即,c:\test 中的文件列表。

其他值,例如"s*.*"返回 somethingelse.TXT,正如您在执行文件操作时所期望的那样——但我不是。

但这表现得如预期:

  C:\test>test_argv asdf
  length: 1
  Argument: asdf

所以我的问题是,我怎样才能制作一个用户友好的脚本,它将"*.*"(等)作为命令行参数?此外,这是在哪里记录/解释的?

编辑:这发生在 windows 和 linux、1.8.7 和 1.9.2

4

1 回答 1

6

您可能需要将其放入文字引号中:

test_argv "*.*"

引号应避免过早地扩展命令行参数。

于 2011-06-07T17:02:19.133 回答