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