写一个脚本,要输入文件通配符 但是试过 mixlib-cli、optparse、slop,发现都存在这样一个问题: 当命令参数输入的通配符可以匹配存在的文件路径时,通配符会被自动解释成匹配的文件列表 例如:
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-f", "--file FILE", "File ") do |f|
options[:file] = f
end
end.parse!
p options
p options[:file].class
p options[:file]
运行结果
ruby t.rb -f dist1/*.*
{:file=>"dist1/*.*"}
String
"dist1/*.*"
# ruby t.rb -f dist/*.*
{:file=>"dist/dist.rb"}
String
"dist/dist.rb"
可见,当参数为不存在的目录 dist1,通配符不被解释 当参数为存在的目录 dist,通配符被解释为匹配的文件列表
在 slop 中也是相同的情形,为什么会这样,求解 我的需要是把参数包括通配符原封不动传进去