gpt4 book ai didi

ruby - 在 Ruby 中使用 OptionParse 强制强制命令行参数

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

我有这个代码:

options = {}
opt_parse = OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"

opts.on("-g", "--grade [N]", "Grade") do |g|
options[:grade] = g
end

opts.on_tail("-h", "--help", "Show this message") do
puts opts
exit
end

end
opt_parse.parse!

如何强制设置 -g 参数?如果未指定,则触发 usage 消息,如调用 -h 参数时显示的那样。

最佳答案

OptionParser 没有内置的方法来检查强制选项。但是解析后很容易检查:

if options[:grade].nil?
abort(opt_parse.help)
end

如果您不想寻找太复杂的东西,手动解析命令行相对容易:

# Naive error checking
abort('Usage: ' + $0 + ' site id ...') unless ARGV.length >= 2

# First item (site) is mandatory
site = ARGV.shift

ARGV.each do | id |
# Do something interesting with each of the ids
end

但是当您的选项开始变得更加复杂时,您可能需要使用选项解析器,例如OptionParser。 :

require 'optparse'

# The actual options will be stored in this hash
options = {}

# Set up the options you are looking for
optparse = OptionParser.new do |opts|
opts.banner = "Usage: #{$0} -s NAME id ..."

opts.on("-s", "--site NAME", "Site name") do |s|
options[:site] = s
end

opts.on( '-h', '--help', 'Display this screen' ) do
puts opts
exit
end
end

# The parse! method also removes any options it finds from ARGV.
optparse.parse!

还有一个非破坏性的parse,但如果您打算使用 ARGV 中的剩余部分,它就没那么有用了。

OptionParser 类没有办法强制执行强制参数(例如本例中的 --site)。但是,您可以在运行 parse! 后自行检查:

# Slightly more sophisticated error checking
if options[:site].nil? or ARGV.length == 0
abort(optparse.help)
end

有关更通用的强制选项处理程序,请参阅 this answer .如果不清楚,所有选项都是可选的,除非您特意将它们设为强制性。

关于ruby - 在 Ruby 中使用 OptionParse 强制强制命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18992843/

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