alt_getopt(1)

okay so we're diving into alt_getopt(1) today, bestie πŸŽ€ the manual page for the command options parser that's giving main character energy πŸ’…


✨ NAME ✨

alt_getopt β€” parses command options 🧚

🌸 SYNOPSIS 🌸

cmds=`alt_getopt opt1 action1 [opt2 action2...] -- "$@"`
eval "$cmds"

πŸ’– DESCRIPTION πŸ’–

ngl alt_getopt is a command options parser and it is SO good 😭 It conforms to POSIX 🫢 and supports long options, which means it works the exact same way as getopt_long(3), the one you'll find in *BSD and GNU libc. Iconic, honestly πŸ‘‘

πŸ¦‹ EXAMPLES πŸ¦‹

okay this is the part I'm obsessed with πŸ™ˆ The following shell script accepts the options: -v (or --verbose), -h (or --help), long option --fake without short synonym, --len accepting argument, -o (or --output) accepting argument, short options -f and -F without long synonyms etc. If option is applied, appropriate shell command is executed. Slay πŸ’…

#!/bin/sh
help () { echo 'help here'; }

process_args (){
  alt_getopt \
    'v|verbose' 'verbose=1' \
    'h help'    help \
    'fake'      fake_flag=1 \
    '=len'      len= \
    '=o output' output= \
    '=m msg'    "msg=" \
    'V version' "echo 'alt_getopt-0-1-0'" \
    f           'flag=1' \
    F           'flag=' \
    =n          number= \
    -- "$@"
}

cmds=`process_args "$@"`
eval "$cmds"

echo "flag=$flag"
echo "msg=$msg"
...

And here's another way to handle options using alt_getopt.sh, bc why not 🌈

#!/bin/sh
. alt_getopt.sh

help () {
  cat 1>&2 <<EOF
demo_alt_getopt2.sh is a demo program for alt_getopt.sh
OPTIONS:
$help_msg
EOF
}

# the third argument in add_arg function envocation is optional
add_arg 'h help'    'help; exit 0' \
  '  -h|--help        display this help'
add_arg 'v|version' "echo 'demo_alt_getopt2.sh 0.1.0'" \
  '  -v|--version     display version'
add_arg '=o|output' "output=" \
  '  -o|--output      output file'

process_args "$@"
shift "$shifts"

echo "output=$output"

🌈 HOME 🌈

the project lives over here πŸ¦‹ <http://sourceforge.net/projects/runawk/>

πŸ‘‘ SEE ALSO πŸ‘‘

getopt(3) and getopt_long(3), go check those out πŸ’œ


that's the whole tea, bestie 🫢 alt_getopt(1), dated 2023-01-02, and still giving πŸ“πŸ’…βœ¨

πŸ“¦ where this page comes from