This script framework is intended for scripts which are run via cron for example, it doesn't try to handle command line arguments as might be needed in an interactive script.
#!/bin/bash
# Written Mr User <DATE>
# Purpose of Script
# =================
#
#
#
# turn on debugging, -x starts, +x stops
set +x
# Variables
# =========
# set to 3 for testing, this forces sending mail, normally should be 0
SENDEMAIL=0
EMAIL=user@mycompany.com
LOGFILE=/path/to/logfile/log.txt
TMPLOG=/tmp/tmplog.txt-$$
DATE=`date +%b" "%d" "%Y`
DAY=`date +%a`
DATENUM=`date +%d`
echo " " >> ${LOGFILE}
echo -n "${DATE} - " >> ${LOGFILE}
# Test to force 1st of the month
# DATENUM=01
if [ $DATENUM == 01 ]
then
MONTHTEST=" - 1st of the month test email."
SENDEMAIL=2
fi
# Start of code
# =============
echo "<What I'm going to do text>" > ${TMPLOG}
echo "================================" >> ${TMPLOG}
echo "" >> ${TMPLOG}
echo "From /path/to/sctipt/scriptname.sh on `hostname`" >> ${TMPLOG}
echo "" >> ${TMPLOG};
echo "" >> ${TMPLOG};
<code>
.
.
.
.
</code>
#If any errors encountered, send email.
if [ ${CPRESULT} != 0 ] || [ ${CPUSERRESULT} != 0 ]
then
SENDEMAIL=1
fi
# Code Finishes here
# ==================
# Send email
# ==========
if [ ${SENDEMAIL} -eq 1 ]
then
/bin/mailx -s "Failure reason `hostname`." ${EMAIL} < ${TMPLOG}
elif [ ${SENDEMAIL} -eq 2 ]
then
/bin/mailx -s "Failure reason `hostname`, ${MONTHTEST}." ${EMAIL} < ${TMPLOG}
elif [ ${SENDEMAIL} -eq 3 ]
then
/bin/mailx -s "scriptname.sh on `hostname`, set to testing." ${EMAIL} < ${TMPLOG}
else
echo "No errors" > /dev/null
fi
# Clean up any mess and finish
# ============================
rm ${TMPLOG}
# exit with return status reflecting how it all went.
exit ${SENDEMAIL}