getopts optstring name [ arg ... ]
       Checks the args for legal options.  If the args are
       omitted, use the positional  parameters.   A  valid
       option  argument  begins  with  a `+' or a `-'.  An
       argument not beginning with a `+' or a `-', or  the
       argument   `--',   ends   the  options.   optstring
       contains the letters that getopts recognizes.  If a
       letter  is  followed  by  a  `:',  that  option  is
       expected to have an argument.  The options  can  be
       separated from the argument by blanks.

       Each  time it is invoked, getopts places the option
       letter  it  finds  in  the  shell  parameter  name,
       prepended  with  a  `+' when arg begins with a `+'.
       The index of the next arg is stored in OPTIND.  The
       option argument, if any, is stored in OPTARG.

       The  first  option to be examined may be changed by
       explicitly assigning  to  OPTIND.   OPTIND  has  an
       initial value of 1, and is normally reset to 1 upon
       exit from a shell function.  OPTARG  is  not  reset
       and  retains its value from the most recent call to
       getopts.   If  either  of  OPTIND  or   OPTARG   is
       explicitly  unset,  it remains unset, and the index
       or option  argument  is  not  stored.   The  option
       itself is still stored in name in this case.

       A  leading `:' in optstring causes getopts to store
       the letter of any invalid option in OPTARG, and  to
       set  name  to  `?' for an unknown option and to `:'
       when a  required  option  is  missing.   Otherwise,
       getopts  sets  name  to  `?'  and  prints  an error
       message when an option is invalid.  The exit status
       is nonzero when there are no more options.
