: ########################################################################## # Shellscript: decfile - decrease counter in file # Version : 0.1 (beta) # Author : Heiner Steven (heiner.steven@odn.de) # Date : 13-01-95 # SCCS-Id. : $Id: decfile,v 1.1.1.1 1999/06/15 19:29:05 heiner Exp $ ########################################################################## # Description # ########################################################################## PN=`basename $0` # Program name - USED BELOW! VER='0.1 (beta)' Usage () { echo "$PN - manipulate counter in file, $VER (stv '95) usage: $PN file [file ...]" >&2 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 Errs=0 for file do if [ -f "$file" ] then lines=`wc -l < "$file"` [ ${lines:-0} -ne 1 ] && { Msg "$file: counter file may only contain one line - ignored" Errs=`expr $Errs + 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") || Errs=`expr $Errs + 1` echo "$n" done exit $Errs