我在向ruby文件传递参数时遇到了麻烦。IE
OptionParser.new do |opts|
opts.banner = 'Usage: mp3split.rb [options]'
opts.on('-f', '--filename fName1,fName2,fName3', Array, 'absolute or relative pathes to file') { |f| options[:filenames] = f }
end.parse!
这种方法需要我编写以下命令:
ruby mp3split.rb --filename fursov_13.mp3,fursov_14.mp3,fursov_14_2.mp3,fursov_15.mp3,fursov_16.mp3,fursov_17.mp3
但是我想通过这个得到array:
ruby mp3split.rb --filename fursov_13.mp3 fursov_14.mp3 fursov_14_2.mp3 fursov_15.mp3 fursov_16.mp3 fursov_17.mp3
如何实现此功能?我找不到任何有用的文件。
2条答案
按热度按时间bvuwiixz1#
OptionParser
你不能。但是,有一个解决方法,当只有一个列表需要以这种方式处理,并且不会向脚本传递其他参数时。OptionParser
在处理输入之前按空格 * 拆分输入。解析后,未键控的参数保留在ARGV
全局常量中。假设上面描述的所有内容都满足,我们开始:我显然修复了代码中的另一个小故障:
options[:filenames]
应该在每次-f
交换机出现时 * 附加 * 而不是 * 覆盖 *,OptionParser
支持script -f f1 -f f2 -f f3
。vxf3dgd42#
我很震惊地发现OptionParter不能做这么简单的事情,所以我切换到Thor,例如:
我现在可以运行:
它在没有参数的情况下运行时也会生成一个可爱的输出: