1*7d68d00bSMichael Walsh#!/bin/bash 2*7d68d00bSMichael Walsh 3*7d68d00bSMichael Walsh# Template to start a simple bash program. This is designed only for the 4*7d68d00bSMichael Walsh# simplest of programs where all program paramters are positional, there is no 5*7d68d00bSMichael Walsh# help text, etc. 6*7d68d00bSMichael Walsh 7*7d68d00bSMichael Walsh# Description of argument(s): 8*7d68d00bSMichael Walsh# parm1 Bla, bla, bla (e.g. "example data"). 9*7d68d00bSMichael Walsh 10*7d68d00bSMichael Walsh 11*7d68d00bSMichael Walsh############################################################################### 12*7d68d00bSMichael Walshfunction get_parms { 13*7d68d00bSMichael Walsh 14*7d68d00bSMichael Walsh # Get program parms. 15*7d68d00bSMichael Walsh 16*7d68d00bSMichael Walsh parm1="${1}" ; shift 17*7d68d00bSMichael Walsh 18*7d68d00bSMichael Walsh return 0 19*7d68d00bSMichael Walsh 20*7d68d00bSMichael Walsh} 21*7d68d00bSMichael Walsh############################################################################### 22*7d68d00bSMichael Walsh 23*7d68d00bSMichael Walsh 24*7d68d00bSMichael Walsh############################################################################### 25*7d68d00bSMichael Walshfunction validate_parms { 26*7d68d00bSMichael Walsh 27*7d68d00bSMichael Walsh # Validate program parameters. 28*7d68d00bSMichael Walsh 29*7d68d00bSMichael Walsh # Your validation code here. 30*7d68d00bSMichael Walsh 31*7d68d00bSMichael Walsh if [ -z "${parm1}" ] ; then 32*7d68d00bSMichael Walsh echo "**ERROR** You must provide..." >&2 33*7d68d00bSMichael Walsh return 1 34*7d68d00bSMichael Walsh fi 35*7d68d00bSMichael Walsh 36*7d68d00bSMichael Walsh return 0 37*7d68d00bSMichael Walsh 38*7d68d00bSMichael Walsh} 39*7d68d00bSMichael Walsh############################################################################### 40*7d68d00bSMichael Walsh 41*7d68d00bSMichael Walsh 42*7d68d00bSMichael Walsh############################################################################### 43*7d68d00bSMichael Walshfunction mainf { 44*7d68d00bSMichael Walsh 45*7d68d00bSMichael Walsh # We create a mainf for a couple of reasons: 46*7d68d00bSMichael Walsh # The coding rules in a template are slightly different than for the true 47*7d68d00bSMichael Walsh # mainline. We wish to eliminate those inconsistencies. Examples: 48*7d68d00bSMichael Walsh # - The "local" builtin is allowed in functions but not in the mainline. 49*7d68d00bSMichael Walsh # - It is good practice to have functions return 1 rather than exit 1. 50*7d68d00bSMichael Walsh # return is not valid in the mainline. Again, we don't want to have to 51*7d68d00bSMichael Walsh # care when we code things about whether we are in the mainline or a 52*7d68d00bSMichael Walsh # function. 53*7d68d00bSMichael Walsh 54*7d68d00bSMichael Walsh get_parms "$@" || return 1 55*7d68d00bSMichael Walsh 56*7d68d00bSMichael Walsh validate_parms || return 1 57*7d68d00bSMichael Walsh 58*7d68d00bSMichael Walsh # Your code here... 59*7d68d00bSMichael Walsh 60*7d68d00bSMichael Walsh return 0 61*7d68d00bSMichael Walsh 62*7d68d00bSMichael Walsh} 63*7d68d00bSMichael Walsh############################################################################### 64*7d68d00bSMichael Walsh 65*7d68d00bSMichael Walsh 66*7d68d00bSMichael Walsh############################################################################### 67*7d68d00bSMichael Walsh# Main 68*7d68d00bSMichael Walsh 69*7d68d00bSMichael Walsh mainf "${@}" 70*7d68d00bSMichael Walsh rc="${?}" 71*7d68d00bSMichael Walsh exit "${rc}" 72*7d68d00bSMichael Walsh 73*7d68d00bSMichael Walsh############################################################################### 74