17d68d00bSMichael Walsh#!/bin/bash 27d68d00bSMichael Walsh 37d68d00bSMichael Walsh# Template to start a simple bash program. This is designed only for the 4*28e403b8SGunnar Mills# simplest of programs where all program parameters are positional, there is no 57d68d00bSMichael Walsh# help text, etc. 67d68d00bSMichael Walsh 77d68d00bSMichael Walsh# Description of argument(s): 87d68d00bSMichael Walsh# parm1 Bla, bla, bla (e.g. "example data"). 97d68d00bSMichael Walsh 107d68d00bSMichael Walsh 117d68d00bSMichael Walsh############################################################################### 127d68d00bSMichael Walshfunction get_parms { 137d68d00bSMichael Walsh 147d68d00bSMichael Walsh # Get program parms. 157d68d00bSMichael Walsh 167d68d00bSMichael Walsh parm1="${1}" ; shift 177d68d00bSMichael Walsh 187d68d00bSMichael Walsh return 0 197d68d00bSMichael Walsh 207d68d00bSMichael Walsh} 217d68d00bSMichael Walsh############################################################################### 227d68d00bSMichael Walsh 237d68d00bSMichael Walsh 247d68d00bSMichael Walsh############################################################################### 257d68d00bSMichael Walshfunction validate_parms { 267d68d00bSMichael Walsh 277d68d00bSMichael Walsh # Validate program parameters. 287d68d00bSMichael Walsh 297d68d00bSMichael Walsh # Your validation code here. 307d68d00bSMichael Walsh 317d68d00bSMichael Walsh if [ -z "${parm1}" ] ; then 327d68d00bSMichael Walsh echo "**ERROR** You must provide..." >&2 337d68d00bSMichael Walsh return 1 347d68d00bSMichael Walsh fi 357d68d00bSMichael Walsh 367d68d00bSMichael Walsh return 0 377d68d00bSMichael Walsh 387d68d00bSMichael Walsh} 397d68d00bSMichael Walsh############################################################################### 407d68d00bSMichael Walsh 417d68d00bSMichael Walsh 427d68d00bSMichael Walsh############################################################################### 437d68d00bSMichael Walshfunction mainf { 447d68d00bSMichael Walsh 457d68d00bSMichael Walsh # We create a mainf for a couple of reasons: 467d68d00bSMichael Walsh # The coding rules in a template are slightly different than for the true 477d68d00bSMichael Walsh # mainline. We wish to eliminate those inconsistencies. Examples: 487d68d00bSMichael Walsh # - The "local" builtin is allowed in functions but not in the mainline. 497d68d00bSMichael Walsh # - It is good practice to have functions return 1 rather than exit 1. 507d68d00bSMichael Walsh # return is not valid in the mainline. Again, we don't want to have to 517d68d00bSMichael Walsh # care when we code things about whether we are in the mainline or a 527d68d00bSMichael Walsh # function. 537d68d00bSMichael Walsh 547d68d00bSMichael Walsh get_parms "$@" || return 1 557d68d00bSMichael Walsh 567d68d00bSMichael Walsh validate_parms || return 1 577d68d00bSMichael Walsh 587d68d00bSMichael Walsh # Your code here... 597d68d00bSMichael Walsh 607d68d00bSMichael Walsh return 0 617d68d00bSMichael Walsh 627d68d00bSMichael Walsh} 637d68d00bSMichael Walsh############################################################################### 647d68d00bSMichael Walsh 657d68d00bSMichael Walsh 667d68d00bSMichael Walsh############################################################################### 677d68d00bSMichael Walsh# Main 687d68d00bSMichael Walsh 697d68d00bSMichael Walsh mainf "${@}" 707d68d00bSMichael Walsh rc="${?}" 717d68d00bSMichael Walsh exit "${rc}" 727d68d00bSMichael Walsh 737d68d00bSMichael Walsh############################################################################### 74