table of contents
| GETOPTS(3) | 3 (libbash getopts library manual) | GETOPTS(3) |
NAME¶
getopts — libbash
library for command line parameters parsing
SYNOPSIS¶
$retval getopt_long
⟨Instructions⟩ ⟨Parameters⟩
DESCRIPTION¶
Here is a table for reference:
- getopts(1)
- (or 1posix on some systems) implemented by bash
- getopts(3)
- implemented by libbash.
- getopt(1)
- implemented by getopt utils (part of util-linux)
- getopt_long(1)
- implemented by libbash and installed to section 1 instead of 3 to prevent collision with C man pages.
- getopt(3)
- implemented by GNU C library.
- getopt_long(3)
- implemented by GNU C library.
The getopt_long function parses the command line arguments. It uses Instructions as the rules for parsing the Parameters.
The Instructions¶
A string that specifies rules for parameters parsing. The instructions string is built of a group of independent instructions, separated by a white space. Each instruction must have the following structure:
-<SingleLetter>|--<MultiLetter>-><VariableName>[:]
This structure contains three parts:
- -<SingleLetter>
- This is the parameter single-letter sign. For example
-h. - --<MultiLetter>
- This is the parameter's corresponding multi-letter sign. For example
--help. - <VariableName>[:]
- This is the name of the variable that will contain the parameter value.
For example:
HELP.
The Variable name can represent one of two variables types:
- Flag
variable
(not followed by‘:’) - In this case, it will hold the value 1 if
‘
on’ (i.e. was specified on command line) and will not be defined if ‘off’. - Value
variable
(followed by‘:’) - In this case, the value it will hold is the string that was given as
the next parameter in the Parameters string
(Separated by white-space or ‘
=’ ). If input contains more then one instance of the considered command line option, an array of the given parameters will be set as the value of the variable.
- Flag
variable
The Parameters¶
The Parameters are simply the parameters you wish to parse.
RETURN VALUE¶
This function returns a string that contains a set of variables definitions. In order to define the variables, this string should be given as a parameter to eval function. This value is returned in the variable $retval.
EXAMPLES¶
Parse command line parameters looking for the flags
-h | --help and
-v | --version and for the
value -p | --path :
getopt_long '-h|--help->HELP
-v|--version->VERSION
-p|--path->PATH:' $*
eval $retval
In this example, for the parameters --help --path=/usr/ the variables that will be created are:
HELP=1 PATH=/usr/
for the parameters --help --path=/usr --path=/bin the variables that will be created are:
HELP=1 PATH=(/usr /bin)
BUGS¶
Values must not contain the string `__getopts__'. This string will be parsed as a single white-space.
A value should not start with an already defined multi-letter sign. If such a value exists, it will be treated as the equivalent singe-letter sign. This bug only accures when using a single-letter sign, or a multi-letter sign that are not followed by a `='.
For example: If we have a script named `foo', and we parse the parameters `-d|--dir:' and `-f|--file:', then
foo -d --file
foo --dir --file
foo --dir=--file
AUTHORS¶
Hai Zaar
⟨haizaar@haizaar.com⟩
Gil Ran ⟨gil@ran4.net⟩
SEE ALSO¶
ldbash(1), getopt_long(1), getopts(1), getopt(1), libbash(1), getopt(3), getopt_long(3)
| Linux |