Thanks for the example. I got it to works with a very minor correction(put $ on variable name,e.g. $count, $blocksize, and $filename). Suppose that I accidently put -g instead of -c, instead of giving me an error, it should just ignore it, just like an *) in the 'case' statement for everything else it does not understand Thanks "Tom Payne" <google / tompayne.org> wrote in message news:6756066a.0302190627.754e22f9 / posting.google.com... > "Useko Netsumi" <usenets / nyc.rr.com> wrote in message news:<b2vb7j$1heg65$1 / ID-159205.news.dfncis.de>... > > Thank you, but its a bit advance for me. I'd like to start on how to parse > > arguments from a shell scripts such as the following: > > > > usage: mktmpswap -c c0 -b b0 -f f0 > > The getoptlong and optparse modules are your friend. They both parse > command line arguments but are quite different in design. getoptlong > is easier to use, but optparse is allegedly more powerful. > > Getoptlong example: > > -----8<----- > require 'getoptlong' > > count = blocksize = filename = nil # default values > GetoptLong.new( > ['-c', GetoptLong::REQUIRED_ARGUMENT], > ['-b', GetoptLong::REQUIRED_ARGUMENT], > ['-f', GetoptLong::REQUIRED_ARGUMENT]).each do |opt, arg| > case opt > when '-c' then count = arg > when '-b' then blocksize = arg > when '-f' then filename = arg > end > end > -----8<----- > > Regards, > > Tom