OPTS = {}
op = OptionParser.new do |x|
x.banner = 'cat <options> <file>'
x.separator ''
x.on("-A", "--show-all", "Equivalent to -vET")
{ OPTS[:showall] = true }
x.on("-b", "--number-nonblank", "number nonempty output lines")
{ OPTS[:number_nonblank] = true }
x.on("-x", "--start-from NUM", Integer, "Start numbering from NUM")
{ |n| OPTS[:start_num] = n }
x.on("-h", "--help", "Show this message")
{ puts op; exit }
end
op.parse!(ARGV)
# Example code for dealing with filenames
ARGV.each{ |fn| output_file(OPTS, fn) }
彼らが言うように、他のコマンド ライン操作は、読者の演習として残しておきます。あなたはアイデアを得る。
(注: フラグの後に値を渡すデモを行うために、架空の -x パラメーターを発明する必要がありました。)
更新: ユーザーがファイル名を入力したと仮定すると、これにより ARGV がファイル名の配列として残ることを説明する必要がありました。