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.
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
Local man page: getopts - Command line help page on your local machine.
getopts - Parse positional parameters.