Jump to content

getopts

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Schily (talk | contribs) at 09:47, 11 October 2016 (Undid revision 743658616 by Schily (talk) GNU getopt(1) seems to support long options, it is only GNU getopt(3) that does not support long options). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

getopts is a built-in Unix shell command for parsing command-line arguments. It is designed to process command line arguments that follow the POSIX Utility Syntax Guidelines.

History

Getopts was first introduced in 1986 in the Bourne shell shipped with Unix SVR3.[1] Earlier versions of the Bourne shell did not have getopts. (Note: getopts is not the same as the C library function getopt.)

Currently, getopts is available in a number of shells, including: Bourne shell, Korn shell, Almquist shell, Bash and Zsh.

getopts (Solaris enhanced)

In spring 2004 (Solaris 10 beta development), the libc implementation for getopt() was enhanced to support long options. As a result, this new feature was also available in the built-in command getopts of the Bourne Shell.

getopt (original)

getopts was developed as an improvement to the original getopt Unix program.

The original getopt program had fewer features than getopts. For example: it did not support whitespaces in arguments, and there was no ability to disable the output of error messages.

The original getopt program was an external command line program (unlike getopts which is a built-in shell command).

getopt (GNU enhanced)

An alternative to getopts is the GNU enhanced version of getopt.

The GNU enhanced version of getopt supports the extra features of getopts plus more advanced features. Most significantly, the GNU enhanced version of getopt supports long option names (e.g. --help) and the options do not have to appear before all the operands (e.g. command operand1 operand2 -a operand3 -b is permitted by the GNU enhanced version of getopt but does not work with getopts).

The GNU enhanced version of getopt is an external command line program (unlike getopts which is a built-in shell command).

Comparison

Summary of features

getopts getopts (Solaris enhanced) getopt (original) getopt (GNU enhanced)
Splitting options for easy parsing Yes Yes Yes Yes
Error messages can be suppressed Yes Yes - Yes
Whitespace allowed in arguments Yes Yes - Yes
Allows operands to be mixed with options - Yes - Yes
Long options support - Yes - Yes

See also

References

  1. ^ Mascheck, Sven. "The Traditional Bourne Shell Family". Retrieved 2010-12-01.