-
Notifications
You must be signed in to change notification settings - Fork 0
/
bash.boilerplate
57 lines (45 loc) · 1.32 KB
/
bash.boilerplate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
# Boilerplate for bash scripts
# NOTE: positional args are converted from $1 to $ARG1 for use with 'set -u'
# replace this bit with a sysadmin desc of script
set -e # fail immediately on error
#set -x # debug mode
PROGNAME=$(basename $0)
usage () {
cat <<EOF
Usage:
$PROGNAME [list of args]
more info in prose form goes here
EOF
exit 0
}
# basic bash colours for fun
RED="\e[31m";GREEN="\e[32m";YELLOW="\e[33m";BLUE="\e[34m";MAG="\e[35m"
CYAN="\e[36m";GRAY="\e[37m";INV="\e[7m";HC="\e[1m";RHC="\e[21m";RS="\e[0m"
DGRAY="\e[90m"
# getopts colon after letter = opt requires an argument (taken as $OPTARG)
while getopts "ab:" option; do
case $option in
a) VAR="foo";;
b) VAR2="$OPTARG";;
esac
done
shift $((OPTIND-1))
if [ -z "$1" ]; then usage; fi
# convert positional args to set variables for set -u
# changes "$1" to "$ARG1" and so on
ARGCOUNT=0
for arg; do let ARGCOUNT=$ARGCOUNT+1; declare "ARG$ARGCOUNT"="$arg"; done
set -u # fail on unset variables
cleanup(){
#echo "Cleaning up..." # do cleanup here
:
}
alert(){
#echo "Alert! Errorb!" # don't do cleanup here
:
}
trap cleanup exit # on any exit
trap alert ERR # on an error (though can't pass any information about error)
# looks like 'trap ERR' doesn't play nicely with 'set -e'
# script goes here