#!/bin/sh -u # A "backup" script - Structured Programming Version (one entry / one exit). # Reference: Chapter 11 # Specifications: # - processes exactly one plain file name (not a directory) # - file name must be readable # - copy file to file.bak, if file.bak does not already exist # -IAN! idallen@ncf.ca if [ $# -eq 1 ] ; then if [ -r "$1" ] ; then echo "path $1 is readable" if [ -f "$1" ] ; then echo "path $1 is a plain file" if [ ! -e "$1.bak" ] ; then cp "$1" "$1.bak" echo "File '$1' copied to '$1.bak'. Good job." returncode=0 else echo 1>&2 "$0: path '$1.bak' already exists" echo 1>&2 "$0: nothing copied" returncode=1 fi else echo 1>&2 "$0: path '$1' is not a plain file" returncode=2 fi else echo 1>&2 "$0: path '$1' is missing or is not readable" returncode=3 fi else if [ $# -eq 0 ] ; then echo 1>&2 "$0: expecting exactly one file name - none found" else echo 1>&2 "$0: expecting exactly one file name, found $# ($*)" fi returncode=4 fi exit "$returncode"