First commit
This commit is contained in:
commit
872ce277b1
15
README.md
Normal file
15
README.md
Normal file
@ -0,0 +1,15 @@
|
||||
# shelltemplate #
|
||||
I noticed that I usually write the same pieces of code at the start of every
|
||||
project. There's the shebang, the copyright header, the program name and the
|
||||
version. This is then followed by variables that holds the path to the binaries
|
||||
used in the script. After that is the sanity check to check for those binaries.
|
||||
Then there is the function for printing the help screen and usage text.
|
||||
So I thought it would be a good idea to keep all of this repeating code in
|
||||
template. And while at it create a neat function to get all the binaries used
|
||||
in the script into variables without having to manually specifiy the path by
|
||||
myself. With this template I can simply just specifiy the binaries to be used
|
||||
by the script and let a loop run through them and set varibles for them. This
|
||||
neat little function uses the 'which' program. This means that there is only
|
||||
one hardcoded binary path in the entire script. If the script fails to execute
|
||||
'which' I just have to locate it manually and update a single variable.
|
||||
|
102
template.sh
Executable file
102
template.sh
Executable file
@ -0,0 +1,102 @@
|
||||
#!/bin/bash
|
||||
|
||||
################################################################################
|
||||
# #
|
||||
# Copyright (C) 2014 Jack-Benny Persson <jack-benny@cyberinfo.se> #
|
||||
# #
|
||||
# This program is free software; you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation; either version 2 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# This program is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with this program; if not, write to the Free Software #
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
# template
|
||||
Version="0.1"
|
||||
Author="Jack-Benny Persson (jack-benny@cyberinfo.se)"
|
||||
|
||||
# Binaries
|
||||
Which="/usr/bin/which"
|
||||
|
||||
# Variables
|
||||
|
||||
|
||||
### Functions ###
|
||||
|
||||
# Print version information
|
||||
print_version()
|
||||
{
|
||||
$Printf "\n\n$0 - $Version\n"
|
||||
}
|
||||
|
||||
# Print help information
|
||||
print_help()
|
||||
{
|
||||
print_version
|
||||
$Printf "$Author\n"
|
||||
$Printf "Shell template\n"
|
||||
/bin/cat <<-EOT
|
||||
|
||||
Options:
|
||||
-h
|
||||
Print detailed help screen
|
||||
-V
|
||||
Print version information
|
||||
-v
|
||||
Verbose output
|
||||
-o
|
||||
Output file
|
||||
EOT
|
||||
}
|
||||
|
||||
# Create variables with absolute path to binaries and check
|
||||
# if we can execute it (binaries will be avaliable in
|
||||
# variables with first character uppercase, such as Grep)
|
||||
Binaries=(sed awk egrep mail printf cat grep mktemp rm tail)
|
||||
Count=0
|
||||
for i in ${Binaries[@]}; do
|
||||
$Which $i &> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
declare $(echo ${Binaries[$Count]^}=`${Which} $i`)
|
||||
((Count++))
|
||||
else
|
||||
echo "It seems you don't have ${Binaries[$Count]} installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Parse command line options and arguments
|
||||
while getopts Vvho: Opt; do
|
||||
case "$Opt" in
|
||||
h) print_help
|
||||
exit 0
|
||||
;;
|
||||
V) print_version
|
||||
exit 0
|
||||
;;
|
||||
v) echo "Verbose output"
|
||||
exit 0
|
||||
;;
|
||||
o) OutFile=$OPTARG
|
||||
;;
|
||||
*) short_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
### Main ###
|
||||
|
||||
|
||||
|
||||
exit 0
|
Loading…
x
Reference in New Issue
Block a user