fisher/man/man1/getopts.md
Jorge Bucaran e0ed629777
One more push before 0.8.0, fixed bugs, paved the way for DEBUG mode.
* Add Mizuki to THANKS for help with Japanese translation of the QuickStart Guide.
* fisher --list should return 1 (fail) if no plugins are installed. Closes #101.
* More consistent style 'Usage' instead of 'usage'.
* Silence index check in case $fisher_cache/.index does not exist.
* Add more descriptive message if plugin is not found.
* Silence search failure in case $fisher_cache/.index does not exist.
2016-02-15 21:24:22 +09:00

2.3 KiB

getopts(1) -- Parse CLI options

SYNOPSIS

getopts [options ...]
getopts [options ...] | while read -l key value; ...; end

DESCRIPTION

Getopts is a command line parser implemented in awk(1), designed to process command line arguments in the easiest way possible.

USAGE

The best way to understand how getopts work is by studying a simple example.

getopts -ab1 --foo=bar baz

And its output.

a
b    1
foo  bar
_    baz

The items on the left represent the option flags or keys associated with the CLI. The items on the right are the option values. The underscore _ character is the default key for arguments without a key.

Use read(1) to process the generated stream and switch(1) to match patterns:

getopts -ab1 --foo=bar baz | while read -l key option
    switch $key
        case _
        case a
        case b
        case foo
    end
end

OPTIONS

None.

EXAMPLES

The following is a mock of fish(1) CLI missing the implementation:

function fish
    set -l mode
    set -l flags
    set -l commands
    set -l debug_level

    getopts $argv | while read -l key value
        switch $key
            case c command
                set commands $commands $value

            case d debug-level
                set debug_level $value

            case i interactive
                set mode $value

            case l login
                set mode $value

            case n no-execute
                set mode $value

            case p profile
                set flags $flags $value

            case h help
                printf "Usage: $_ [OPTIONS] [-c command] [FILE [ARGUMENTS...]]\n"
                return

            case \*
                printf "$_: '%s' is not a valid option.\n" $key
                return 1
        end
    end

    # Implementation
end

BUGS

  • getopts does not read the standard input. Use getopts to collect options and the standard input to process a stream of data relevant to your program.

  • A double dash, --, marks the end of options. Arguments after this sequence are placed in the default underscore key, _.

  • The getopts described in this document is not equivalent to the getopts builtin found in other shells.

AUTHORS

Jorge Bucaran j@bucaran.me.