如何将字符串“*。*”作为命令行参数传递给ruby?

时间:2011-06-07 16:52:08

标签: ruby argv

代码:

  #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

1 个答案:

答案 0 :(得分:5)

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

test_argv "*.*"

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