require'optparse'classHellodefinitialize(arguments)@arguments=argumentsparse_optionsenddefparse_optionsoptions=OptionParser.newoptions.banner='Usage: xxxx [options]'options.separator''options.separator'options:'#on('short option', 'long option', 'comment')#帶參數options.on('-a arg','--aa arg','this is test'){|arg|putsarg}#不帶參數options.on('-b','--bb','this is test'){puts'b'}#多個參數options.on('-c arg','--cc arg','this is test'){|arg|putsarg}options.on('-h','--help','Show this message'){puts(options);exit}options.parse!(@arguments)endendHello.new(ARGV)
123456789101112131415
rubyoptparse.rb-aa#=>arubyoptparse.rb--aaaa#=>aarubyoptparse.rb-b#=>brubyoptparse.rb--bb#=>brubyoptparse.rb-cc,cc#=>c,ccrubyoptparse.rb-h#Usage: xxxx [options]# -t, --test arg this is test# -h, --help Show this message
first,second,third=ARGVputs"Your first variable is: #{first}"puts"Your second variable is: #{second}"puts"Your third variable is: #{third}"# ARGV 就是「參數變數(argument variable)」,是一個非常標準的程式術語。# 在其他的程式語言你也可以看到它全大寫的原因是因為它是一個「常數(constant)」,# 意思是當它被賦值之後你就不應該去改變它了。這個變數會接收當你運行 Ruby 腳本時所傳# 入的參數。通過後面的習題你將對它有更多的了解。你將對它有更多的了解。# 第 1 行將 ARGV 「解包(unpack)」,與其將所有參數放到同一個變數下面,我們將每個參數# 予一個變數名稱 first 、 second 以及 third。腳本本身的名稱被存在一個特殊變數 $0# 裡,這是我們不需要解包的部份。也許看來有些異,但「解包」可能是最好的描述方式了。它# 的涵義很簡單:「將 ARGV 中的東西解包,然後將所有# 的參數依次賦予左邊的變數名稱」。