Ruby 命令行选项学习笔记
一、概述
命令行选项是在执行命令时传递给程序的参数,它们通常以短横线“-”或双短横线“--”开头,用于控制程序的行为。Ruby 提供了 getopt 和 OptionParser 这两个库来快速创建命令行选项。
二、使用 getopt 库
getopt 是 C 语言中的标准库,它提供了解析命令行选项的功能。Ruby 中也有 getopt 库可以使用。
1. 安装
rubyCopy Coderequire 'getoptlong'
2. 示例
rubyCopy Coderequire 'getoptlong'
opts = GetoptLong.new(
['--help', '-h', GetoptLong::NO_ARGUMENT],
['--name', '-n', GetoptLong::REQUIRED_ARGUMENT],
['--age', '-a', GetoptLong::OPTIONAL_ARGUMENT]
)
opts.each do |opt, arg|
case opt
when '--help'
puts <<-EOF
Usage: test.rb [OPTION]...
-h, --help show help
-n, --name set name
-a, --age set age
EOF
exit
when '--name'
name = arg
when '--age'
age = arg
end
end
puts "name: #{name}" if name
puts "age: #{age}" if age
三、使用 OptionParser 库
OptionParser 是 Ruby 内置的命令行选项解析库,用起来比 getopt 更加方便。
1. 示例
rubyCopy Coderequire 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on('-h', '--help', 'Display this help message') do
puts opts
exit
end
opts.on('-nNAME', '--name=NAME', 'Set name') do |name|
options[:name] = name
end
opts.on('-aAGE', '--age=AGE', Integer, 'Set age') do |age|
options[:age] = age
end
end.parse!
puts "name: #{options[:name]}" if options[:name]
puts "age: #{options[:age]}" if options[:age]
四、总结
本文简要介绍了 Ruby 中两个常用的命令行选项解析库(getopt 和 OptionParser),并提供了相应的示例。使用它们可以很方便地处理命令行选项参数,为命令行程序的开发提供帮助。