Bash Script Long Options/Flags

script.sh:

die() { echo "$*" >&2; exit 2; } # complain to STDERR and exit with error needs_arg() { if [ -z "$OPTARG" ]; then die "No arg for --$OPT option"; fi; } while getopts ab:c:-: OPT; do # support long options: https://stackoverflow.com/a/28466267/519360 if [ "$OPT" = "-" ]; then # long option: reformulate OPT and OPTARG OPT="${OPTARG%%=*}" # extract long option name OPTARG="${OPTARG#$OPT}" # extract long option argument (may be empty) OPTARG="${OPTARG#=}" # if long option argument, remove assigning `=` fi case "$OPT" in a | alpha ) alpha=true ;; b | bravo ) needs_arg; bravo="$OPTARG" ;; c | charlie ) needs_arg; charlie="$OPTARG" ;; ??* ) die "Illegal option --$OPT" ;; # bad long option ? ) exit 2 ;; # bad short option (error reported via getopts) esac done shift $((OPTIND-1)) # remove parsed options and args from $@ list echo "alpha: $alpha | bravo: $bravo | charlie: $charlie"
Code language: PHP (php)

Usage:

bash script.sh --alpha --bravo=value-here --charlie="Long value"
Code language: Bash (bash)

Or:

bash script.sh -a -b value-here -c "Long value"
Code language: Bash (bash)


Posted

in

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *