代码:
#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
上答案 0 :(得分:5)
您可能需要将其放入文字引号中:
test_argv "*.*"
引号应避免让命令行参数过早扩展。