########################################################################## # Title : incfile - increase/decrease counter in file # Author : Heiner Steven # Date : 1995-01-13 # Requires : # Category : File Utilities # SCCS-Id. : @(#) incfile 1.3 04/01/06 ########################################################################## # Description # Increases or decreases a numerical counter in a file. # Install as both "incfile" and "decfile". ########################################################################## PN=`basename "$0"` # Program name - USED BELOW! VER='1.3' usage () { echo >&2 "$PN - manipulate counter in file, $VER (stv '95) usage: $PN file [file ...]" exit 1 } msg () { for i do echo "$PN: $i" >&2 done } fatal () { msg "$@"; exit 1; } case "$PN" in inc*|dec*) ;; *) fatal "Installation error: illegal script name \"$PN\"" \ "Script name must start with 'inc' or 'dec'";; esac while [ $# -gt 0 ] do case "$1" in # Your flags here --) shift; break;; -h) usage;; -*) usage;; *) break;; # First file name esac shift done [ $# -lt 1 ] && usage exitcode=0 for file do if [ -s "$file" ] then lines=`wc -l < "$file"` [ ${lines:-0} -ne 1 ] && { msg "$file: counter file may only contain one line - ignored" exitcode=1 continue } n=`head -1 "$file"` else case "$PN" in inc*) n=0;; dec*) n=1;; esac fi case "$PN" in inc*) n=`expr ${n:-0} + 1`;; dec*) n=`expr ${n:-1} - 1` [ ${n:-0} -lt 0 ] && n=0;; # no negative values esac # Execute "echo" in subshell, so errors won't terminate this script (echo "$n" > "$file") || exitcode=1 echo "$n" done exit $exitcode