DOKK / manpages / debian 12 / runawk / alt_getopt.1.en
alt_getopt(1) alt_getopt(1)

alt_getopt - parse command options

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

alt_getopt is a command options parser. It conforms to POSIX and supports long options, that is works the same way as getopt_long(3) found in *BSD and GNU libc.

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.

 #!/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"
 ...

Another way to handle options using alt_getopt.sh

  #!/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"

<http://sourceforge.net/projects/runawk/>

getopt(3) getopt_long(3)

2023-01-02