gpt4 book ai didi

ruby - optionparser 将数组传递给 ruby​​ 文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:19 26 4
gpt4 key购买 nike

我在将参数传递到我的 ruby​​ 文件时遇到了问题。浏览器,

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

但是我想通过这个获取数组:

ruby mp3split.rb --filename fursov_13.mp3 fursov_14.mp3 fursov_14_2.mp3 fursov_15.mp3 fursov_16.mp3 fursov_17.mp3

如何实现此功能?我在文档中找不到任何对此有帮助的信息。

最佳答案

使用 OptionParser 你不能。但是,有一个解决方法,当只有一个列表时,您需要以这种方式处理,并且您不会将其他参数传递给脚本。 OptionParser 在处理输入之前 按空格拆分输入。未加密的参数在解析后保留在 ARGV 全局常量中。假设满足上述所有条件,我们开始:

OptionParser.new do |opts|
options[:filenames] = []
opts.banner = 'Usage: mp3split.rb [options]'
opts.on('-f', '--filename fName1 fName2 fName3', Array,
'absolute or relative pathes to file') do |f|
options[:filenames] |= [*f]
end
end.parse!

options[:filenames] |= ARGV

我显然修复了您代码中的另一个故障:options[:filenames] 应该appended 而不是 overwritten 每次出现 -f 开关,OptionParser 支持script -f f1 -f f2 -f f3

关于ruby - optionparser 将数组传递给 ruby​​ 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29935600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com