#!/bin/bash

# Template to start a simple bash program.  This is designed only for the
# simplest of programs where all program parameters 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 exit_function {

  return

}

function validate_parms {

  # Validate program parameters.

  # Your validation code here.

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

  trap "exit_function $signal \$?" EXIT

  return 0

}


function mainf {

  get_parms "$@" || return 1

  validate_parms || return 1

  # Your code here...

  return 0

}


# Main

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