Shell Programming with Bourne shell

test [ ]
Bourne shell constructs
source filename [arguments] or . filename [arguments]
while list do list done
for name [ in word; ] do list ; done
case word in [ pattern [ | pattern ] ... ) list ;; ] ... esac
&& logical AND
|| logical OR
{ list; } group commands
( list ) run commands in a sub-shell
trap [arg] [sigspec]
comment #
null command :

Chebucto CGI shell program standard preprocessing

Please note: formatting gets lost with the HTML display.

Bourne shell header
!/bin/sh
Redirect error output to a file
exec 2>>/ccn/logs/test.`date +%y%m%d`
Read system variables
[ -f /etc/csuite.conf ] && . /etc/csuite.conf &&
[ -f "$CS_VARS1" ] && . $CS_VARS1 || {
echo "<h1>ERROR: could not find system variable file.</h1>"
exit 1
}
Path specification
PATH=$SYSPATH; export PATH
PATH=$CGI_PATH; export PATH
HTML header specification
echo "Content-type: text/html"
echo
# To report environment and exit
#
#[ -f $CS_CGI_LIB/cgi-env ] && . $CS_CGI_LIB/cgi-env && read line &&
#echo $line | sed 's/&/\
#/g' && exit 1
# To check remote address
#if [ -z "$REMOTE_ADDR" ]; then
# echo "<h1>ERROR: missing remote address...who are you!<h1>"
# exit 1
#fi
# to process QUERY_STRING
[ -n "QUERY_STRING" ] && eval `clean-qs "$QUERY_STRING"`
# to process form fields
if [ "$REQUEST_METHOD" = POST ] && [ "$CONTENT_LENGTH" -gt 0 ]
then
eval `dd ibs=$CONTENT_LENGTH count=1 2>/dev/null | clean-post`
fi
# for verbose error output
#set -x
Programs called: (you must be logged into CCN to see these files)
/etc/csuite.conf
/ccn/lib/vars1
clean-qs
clean-post