: ########################################################################## # Shellscript: rand - return random number # Version : 0.2 (beta) # Author : Heiner Steven (heiner.steven@odn.de) # Date : 09.02.95 # SCCS-Id. : $Id: rand,v 1.1.1.1 1999/06/15 19:29:05 heiner Exp $ ########################################################################## # Description # Uses the date and the process id to calculate a random number # Changes # 28.09.95 stv Random numbers cannot be maxvalue+1 (0.2) ########################################################################## PN=`basename $0` # program name VER='0.2 (beta)' MaxRand=32766 Usage () { echo "$PN - return random number, $VER (stv '95) usage: $PN [maxvalue] Prints a random value (1 <= random <= maxvalue) to standard output. If no maximum value is specified, `expr $MaxRand + 1` is the default" >&2 exit 1 } Msg () { for i do echo "$PN: $i" >&2 done } Fatal () { Msg "$@"; exit 1; } while [ $# -gt 0 ] do case "$1" in # Your flags here --) shift; break;; -h) Usage;; -*) Usage;; *) break;; # First file name esac shift done if [ $# -gt 1 ] then Usage elif [ $# -eq 1 ] then if expr $1 + 0 > /dev/null 2>&1 then Max=$1 else Fatal "illegal number: $1" fi fi : ${Max:=$MaxRand} # Use default value set -- `date '+%H %M %S'` [ $# -ne 3 ] && Fatal "could not invoke program date" n=`expr $$ \* $1 \* $2 \+ $3` exec expr \( $n % $Max \) + 1