getopt

Parse positional parameters.
Break up the options in a command line (for easy parsing by shell procedure), and check for legal options.

Syntax
      args=`getopt optstring $*` ; errcode=$?; set -- $args

Options
   Optstring  A string of recognized option letters 
              either individual characters or characters followed by a colon 
              to indicate an argument is to follow.
              e.g. an option string  x recognizes an option "-x",
              and an option string  x: recognizes an option and argument "-x argument".
              It does not matter if the argument has leading white space.

   --        This special option is used to delimit the end of the options.
     	      getopt will place  `--' in the arguments at the end of the options,
             or recognize it if used  explicitly. 

($1 $2 ...)   The shell arguments  are reset so that each
              option is preceded by a `-' and in its own shell argument; 
              each option argument is also in its own shell argument.

Examples

The following code fragment shows how one might process the arguments for a command that can take the options -a and -b, and the option -o, which requires an argument.

	   args=`getopt abo: $*`
	   # you should not use `getopt abo: "$@"` since that would parse
	   # the arguments differently from what the set command below does.
	   if [ $? != 0 ]
	   then
		   echo 'Usage: ...'
		   exit 2
	   fi
	   set -- $args
	   # You cannot use the set command with a backquoted getopt directly,
	   # since the exit code from getopt would be shadowed by those of set,
	   # which is zero by definition.
	   for i
	   do
		   case "$i"
		   in
			   -a|-b)
				   echo flag $i set; sflags="${i#-}$sflags";
				   shift;;
			   -o)
				   echo oarg is "'"$2"'"; oarg="$2"; shift;
				   shift;;
			   --)
				   shift; break;;
		   esac
	   done
	   echo single-char flags: "'"$sflags"'"
	   echo oarg is "'"$oarg"'"

     This code will accept any of the following as equivalent:

	   cmd -aoarg file file
	   cmd -a -o arg file file
	   cmd -oarg -a file file
	   cmd -a -oarg -- file file

“You spend a good piece of your life gripping a baseball and in the end it turns out that it was the other way around all the time” - Jim Bouton

Related:

getopt man page - Apple.com
getopts - Parse positional parameters



Back to the Top

© Copyright SS64.com 1999-2012
Some rights reserved