slh*_*hck 0 ruby wildcard argument-passing command-line-arguments
我是Ruby的新手,需要编写一个可以处理多个输入文件的脚本.它应该像这样调用:
script.rb -i file*
Run Code Online (Sandbox Code Playgroud)
目录包含多个文件,例如file1.xml,file2.xml等等.只是一个简单的问题:这个通配符将如何扩展?我需要在我的脚本中编程吗?我正在使用OptionParserClass来解析命令行参数.
谢谢!
通配符由命令行扩展,因此您将获得目录中每个文件的列表
C:\working>dir *.txt
05/10/2007 03:24 PM 46,101 config.txt
11/23/2004 11:54 AM 361 tips.txt
2 File(s) 46,462 bytes
Run Code Online (Sandbox Code Playgroud)
如果你这样做,
C:\working>ruby -e "puts ARGV" *.txt
config.txt
tips.txt
Run Code Online (Sandbox Code Playgroud)
Ruby将字符串*.txt转换为匹配的文件名,并将扩展的数组作为新参数传入.
使用optparse:
options = {}
OptionParser.new do |opts|
opts.on("-i", Array, "List files") do |v|
options[:files] = v
end
end.parse!
p options
C:\working> script.rb -i *.txt
Run Code Online (Sandbox Code Playgroud)
将打印出来:
["config.txt","tips.txt"]
Run Code Online (Sandbox Code Playgroud)
将导致选项[:files]成为字符串数组
http://www.ruby-forum.com/topic/111252