Ruby 命令行选项学习笔记

一、概述

命令行选项是在执行命令时传递给程序的参数,它们通常以短横线“-”或双短横线“--”开头,用于控制程序的行为。Ruby 提供了 getopt 和 OptionParser 这两个库来快速创建命令行选项。

二、使用 getopt 库

getopt 是 C 语言中的标准库,它提供了解析命令行选项的功能。Ruby 中也有 getopt 库可以使用。

1. 安装

rubyCopy Code
require 'getoptlong'

2. 示例

rubyCopy Code
require '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 Code
require '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),并提供了相应的示例。使用它们可以很方便地处理命令行选项参数,为命令行程序的开发提供帮助。