Need help with argbash?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

matejak
881 Stars 47 Forks Other 422 Commits 32 Opened issues

Description

Bash argument parsing code generator

Services available

!
?

Need anything else?

Contributors list

# 74,761
argumen...
shell-s...
Ruby
Ansible
339 commits
# 65,048
commiti...
Git
semanti...
PHP
9 commits
# 261,875
CSS
coderev...
Django
rhel
7 commits
# 459,699
argumen...
shell-s...
steam
Univers...
5 commits
# 84,655
hugo
pypi
markdow...
latex-t...
3 commits
# 195,496
C++
C
webrtc
junit
3 commits
# 86,142
travis-...
elm
rust-bi...
unix
2 commits
# 171,048
Haskell
Google
google-...
Rust
2 commits
# 167,972
Kotlin
Raspber...
Django
messeng...
1 commit
# 74,610
excel
ooxml
mux
fasthtt...
1 commit
# 57,558
Angular
MongoDB
TypeScr...
Express
1 commit
# 8,016
JavaScr...
TypeScr...
Svelte
npm
1 commit

argbash

Build Status Documentation Status

argbash logo

  • Do you write
    Bash
    scripts that should accept arguments?
  • But they don't since arguments support is a daunting task, because ...
  • getopt
    is discouraged,
    getopts
    doesn't support long options, there is no widely-accepted
    Bash
    module to do the task and some solutions don't work on all platforms (Linux, OSX, MSW)...

Give

Argbash
a try and stop being terrorized by those pesky arguments! With Argbash, you will get:
  • Fast, minimalistic declaration of arguments your script expects (see below for supported argument types).
  • Scripts generated from definitions once that can be used on all platforms that have
    bash
    .
  • Definitions embedded in few lines of the script itself (so you can use
    Argbash
    to regenerate the parsing part of your script easily).
  • Ability to re-use low-level
    Argbash
    -aware scripts by wrapping them by higher-level
    Argbash
    -aware ones conveniently, without duplicating code.
  • Easy installation (optional). Just grab a release, unzip it, go inside and run
    cd resources && make install
    (you may want to run
    sudo make install PREFIX=/usr
    for a system-wide installation).
  • Documentation and examples.

Make your existing script powered by

Argbash
in a couple of minutes. Explore various Argbash flavours:

Flavour

Target group
Argbash online Use it if you want to try Argbash without installing it and you have permanent access to the Internet.
Argbash CLI Install the package to have

argbash
ready locally all the time.
Argbash Docker Pretty much like Argbash CLI, but you don't have to install it, you just download the image.

What it is

Argbash is not a parsing library, but it is rather a code generator that generates a bash library tailor-made for your script. It lets you to describe arguments your script should take and then, you can generate the

bash
parsing code. It stays in your script by default, but you can have it generated to a separate file and let
Argbash
to include it in your script for you. In any case, you won't need
Argbash
to run the script.

Argbash
is very simple to use and the generated code is relatively nice to read. Moreover, argument definitions stay embedded in the script, so when you need to update the parsing logic, you just re-run the
argbash
script on the already generated script.

So by writing few comments to your script and running the Argbash's

bin/argbash
over it, you will get a
bash
script with argument parsing. See the simple example source template and simple example script for the result. If you are not into long reading, let
bin/argbash-init
generate the template for you.

Following argument types are supported:

  • Positional arguments (defaults supported, possibility of fixed, variable or infinite number of arguments),
  • optional arguments that take one value,
  • boolean optional arguments,
  • repeated (i.e. non-overwriting) optional arguments,
  • incrementing (such as
    --verbose
    ) optional arguments and
  • action optional arguments (such as
    --version
    ,
    --help
    ).

Following outputs are available:

  • Bash scripts, tailor-made bash parsing libraries.
  • POSIX scripts that use
    getopts
    , also tailor-made.
  • Bash completion.
  • docopt-compliant usage message.
  • Manpage output using rst2man.

The utility has been inspired by Python's

argparse
and the
shflags
project.

Read the docs (latest stable version) for more info

Requirements

  • bash
    that can work with arrays (most likely
    bash >= 3.0
    ) (the only requirement for users - i.e. people that only execute scripts and don't make them)
  • autom4te
    utility that can work with sets (part of
    autoconf >= 2.63
    suite)
  • basic utilities s.a.
    sed
    ,
    grep
    ,
    cat
    ,
    test
    .

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.