getopt
Parse command options.
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
"Edinburgh is in a different country from the rest of England" - Anon
Related commands:
sh(1), getopt(3)
Equivalent BASH command:
getopts - Parse command options