#!/bin/bash

# Template to start a simple bash program.  This is designed only for the
# simplest of programs where all program paramters are positional, there is no
# help text, etc.

# Description of argument(s):
# parm1            Bla, bla, bla (e.g. "example data").


###############################################################################
function get_parms {

  # Get program parms.

  parm1="${1}" ; shift

  return 0

}
###############################################################################


###############################################################################
function validate_parms {

  # Validate program parameters.

  # Your validation code here.

  if [ -z "${parm1}" ] ; then
    echo "**ERROR** You must provide..." >&2
    return 1
  fi

  return 0

}
###############################################################################


###############################################################################
function mainf {

  # We create a mainf for a couple of reasons:
  # The coding rules in a template are slightly different than for the true
  # mainline.  We wish to eliminate those inconsistencies.  Examples:
  # - The "local" builtin is allowed in functions but not in the mainline.
  # - It is good practice to have functions return 1 rather than exit 1.
  #   return is not valid in the mainline.  Again, we don't want to have to
  #   care when we code things about whether we are in the mainline or a
  #   function.

  get_parms "$@" || return 1

  validate_parms || return 1

  # Your code here...

  return 0

}
###############################################################################


###############################################################################
# Main

  mainf "${@}"
  rc="${?}"
  exit "${rc}"

###############################################################################
