table of contents
other sections
| GETOPTS(3) | 3 (libbash getopts library manual) | GETOPTS(3) |
NAME¶
getopts —
libbash library for command line parameters
parsing
SYNOPSIS¶
$retvalgetopt_long ⟨Instructions⟩
⟨Parameters⟩
DESCRIPTION¶
This is a documentation for libbash
getopts library, that implements getopt_long
function for bash(1). For documentation of bash
getopts function, please see getopts(1) (
getopts(1posix) on some systems).
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 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
HELP=1 PATH=/usr/
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
and
will not work
will work.
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)| August 9, 2018 | Linux |