Manual Page Result
0
Command: getopts | Section: 1 | Source: Digital UNIX | File: getopts.1.gz
getopts(1) General Commands Manual getopts(1)
NAME
getopts - Parses utility options
SYNOPSIS
getopts optstring name [arg...]
STANDARDS
Interfaces documented on this reference page conform to industry stan-
dards as follows:
getopts: XPG4, XPG4-UNIX
Refer to the standards(5) reference page for more information about in-
dustry standards and associated tags.
OPTIONS
None
OPERANDS
A string containing the option characters recognized by the utility in-
voking getopts. If a character is followed by a colon (:), the option
is expected to have an argument, which should be supplied as a separate
argument. Applications should specify an option character and its op-
tion-argument as separate arguments, but getopts interprets the charac-
ters following an option character requiring arguments as an argument
whether or not this is done. An explicit null option-argument is not
recognized if it is not supplied as a separate argument when getopts is
invoked. The characters question-mark (?) and colon (:) must not be
used as option characters by an application. The use of other option
characters that are not alphanumeric produces unspecified results. If
the option-argument is not supplied as a separate argument from the op-
tion character, the value in OPTARG is stripped of the option character
and the hyphen (-). The first character in optstring determines getopts
behavior if an option character is not known or an option-argument is
missing. The name of a shell variable that is set by the getopts util-
ity to the option character that was found.
The getopts utility by default parses positional parameters passed to
the invoking shell procedure. If args are given, they are parsed in-
stead of the positional parameters.
DESCRIPTION
The getopts utility is used to retrieve flags and flag arguments from a
list of parameters.
Each time it is invoked, the getopts utility places the value of the
next flag in the shell variable specified by the name operand and the
index of the next argument to be processed in the shell variable
OPTIND. Whenever the shell is invoked, OPTIND is initialized to 1.
When the flag requires a flag argument, the getopts utility places it
in the shell variable OPTARG. If no flag is found, or if the flag found
does not have a flag argument, OPTARG is unset.
If a flag character not contained in the optstring operand is found
where a flag character is expected, the shell variable specified by
name is set to the question-mark (?) character. In this case, if the
first character in optstring is a colon (:), the shell variable OPTARG
is set to the flag character found, but no output is written; other-
wise, the shell variable OPTARG is unset and a diagnostic message writ-
ten. This condition is considered to be an error detected in the way
arguments were presented to the invoking application, but is not an er-
ror in getopts processing.
If a flag argument is missing, then: If the first character of opt-
string is a colon, the shell variable specified by name is set to the
colon (:) character and the shell variable OPTARG is set to the flag
character found. Otherwise, the shell variable specified by name is
set to the question-mark (?) character, the shell variable OPTARG is
unset, and a diagnostic message is written to standard error. This con-
dition is considered to be an error detected in the way arguments were
presented to the invoking application, but is not an error in getopts
processing; a diagnostic message is written as stated, but the exit
status is zero.
When the end of flags is encountered the getopts utility exits with: A
return value greater than zero The shell variable OPTIND set to the in-
dex of the first nonflag argument, where the first -- argument is con-
sidered to be a flag argument if there are no other nonflag arguments
appearing before it, or the value $# + 1 if there are no nonflag argu-
ments The name variable set to the question-mark (?) character
Any of the following identifies the end of flags: The special flag --
Finding an argument that does not begin with a - Encountering an error
The shell variables OPTIND and OPTARG are local to the caller of
getopts and are not exported by default.
The shell variable specified by the name operand, OPTIND and OPTARG af-
fect the current shell execution environment.
If the application sets OPTIND to the value 1, a new set of parameters
can be used: either the current positional parameters or new arg val-
ues. Any other attempt to invoke getopts multiple times in a single
shell execution environment with parameters (positional parameters or
flag operands) that are not the same in all invocations, or with an
OPTIND value modified to be a value other than 1, produces unspecified
results.
NOTES
If getopts is called in a subshell or separate utility execution envi-
ronment, such as one of the following it will not affect the shell
variables in the caller's environment:
(getopts abc value "$@") nohup getopts ... Shell functions
share OPTIND with the calling shell even though the positional
parameters are changed. Functions that want to use getopts to
parse their arguments will usually want to save the value of
OPTIND on entry and restore it before returning. However, there
are cases when a function will want to change OPTIND for the
calling shell.
RESTRICTIONS
The getopts command is implemented as a shell built-in command. It is
only available to users of the Korn (ksh) and POSIX shells.
A similar capability is available to Bourne and C shell users with the
getopt command.
EXIT STATUS
The following exit values are returned: An option, specified or unspec-
ified by optstring, was found. Successful completion. The end of op-
tions was encountered or an error occurred.
EXAMPLES
The following example script parses and displays its arguments:
aflag= bflag= while getopts ab: name do
case $name in
a) aflag=1;;
b) bflag=1
bval="$OPTARG";;
?) printf "Usage: %s: [-a] [-b value] args\n" $0
exit 2;;
esac done if [ ! -z "$aflag" ]; then
printf "Option -a specified\n" fi if [ ! -z "$bflag" ]; then
printf 'Option -b "%s" specified\n' "$bval" fi shift $(($OPTIND -
1)) printf "Remaining arguments are: %s\n" "$*"
ENVIRONMENT VARIABLES
The following environment variables affect the execution of getopts:
Provides a default value for the internationalization variables that
are unset or null. If LANG is unset or null, the corresponding value
from the default locale is used. If any of the internationalization
variables contain an invalid setting, the utility behaves as if none of
the variables had been defined. If set to a non-empty string value,
overrides the values of all the other internationalization variables.
Determines the locale for the interpretation of sequences of bytes of
text data as characters (for example, single-byte as opposed to multi-
byte characters in arguments and input files). Determines the locale
used to affect the format and contents of diagnostic messages written
to standard error. Determines the location of message catalogues for
the processing of LC_MESSAGES. On exit, this variable will contain the
value of a flag argument if one was found, otherwise it is unset. This
variable is used by the getopts utility as the index of the next argu-
ment to be processed.
SEE ALSO
Commands: getopt(1), ksh(1), sh(1p)
Routines: getopt(3)
Standards: standards(5)
getopts(1)