#!/usr/bin/env bash
# - See 'man env' and the discussion involving 'env'
# and invoking Perl
# in "Programming Perl", by Larry Wall
# bcmp, Bash "CoMPiler"
# this program really just runs some housekeeping
# chores you should do before trying to run a bash script.
# This is partly inspired by a discussion of software
# configuration management I read somewhere
# (source forgotten) discussing the nightly 'build'
# of some perl scripts, which rather than compiling them
# they were put through regressions tests to verify they
# were ready to run.
# Many of the commands used in this were things I'd come
# across lately that seemed to fit in with this idea.
#
# 7 June 2008 Dallas E. Legan II
USAGE="${0##*/} -h | <script>" ;
THESCRIPT=${1:?"What script file? Usage: ${USAGE}"} ;
[ -f ${THESCRIPT} ] || { echo ${USAGE} ; exit ; } ;
set -e ;
# - This causes bash to go into 'abort on command error' mode
# See "Linux Journal", Feb. 2008, p. 10, "Letters"
# "mkdir Errors Even More Trivial", Ed L. Cashin
# http://www.linuxjournal.com/article/9957
# This is also documented in 'man bash' and 'help set'
# in somewhat obscure, too understated a way.
# 9 July 2008 addition:
# This is also referenced in
# the "bash Cookbook",
# Carl Albing, JP Vossen & Cameron Newham
# O'Reilly, (C) 2007
# ISBN-10: 0-596-52678-4
# ISBN-13: 978-0-596-52678-8
# http://www.bashcookbook.com/
# p. 75 - 76
# Recipe 4.6 "Using Fewer if Statements"
sed -i 's/ *$//' ${THESCRIPT} ;
# - to strip out trailing blanks, particularly annoying
# after '\' 'line continuations'
# '-i' causes 'editing in place'.
# (Addition 1 July 2008:)
# I came across another reason for this
# in the "bash Cookbook",
# p. 57 - 59,
# Recipe 3.3 "Preventing Weird Behaviour in a Here-Document"
# 'trap' on page 59 in particular.
# Basicly, trailing spaces on here document delimiters
# can cause a bad day.
# --
# Alternatively, this might be done using
# 'ed', to make it more traditional and portable.
# For now, I'm leaving out this idea,
# but you might want to install some commands
# to verify that the number of
# '(' == ')' (outside 'case' statements)
# '[' == ']'
# '{' == '}'
# Total number of "'" and '"' are even, etc.
# Seperate checks for these might make
# make interpreting the results easier to figure out.
chmod ugo+x ${THESCRIPT} ;
# - simply to set the permissions to executable
bash -n ${THESCRIPT} ;
# - to do a simple syntax check
# per the "bash Cookbook",
# p. 476 - 477
# Recipe 19.12 "Testing bash Script Syntax"
# also 'man bash' and 'help set',
# where this is obscurely documented.
cp ${THESCRIPT} ~/bin/ ;
# - Lastly, copy the script to a directory in PATH,
# this could be any satisfactory location.
# You might also want to check the script into some
# version control system at this point,
# or runs some functional/regression tests.
echo ${THESCRIPT} seems ready to run ;
# 9 July 2008 addition:
# This is an idea Garth told me about while at
# Rockwell - when it doesn't conflict with the
# purpose of the program, it's good to have a
# message telling if it succeeded or not.
# This was in the mainframe world,
# and this can conflict with the needs of
# Unix programs, but a good idea when practical.
# END OF SCRIPT
Showing posts with label bash "syntax check" chmod scripting sed. Show all posts
Showing posts with label bash "syntax check" chmod scripting sed. Show all posts
Monday, June 9, 2008
A bash Tool
I was writing a bash script the other day, and got fed up with having to take seperate steps to handle a lot of the routine steps to make it useable. So, I piled them all together. This bundles together several ideas I been exposed to in the last week.
Subscribe to:
Posts (Atom)