📄 krand.bash
字号:
# Originally## From: bsh20858@news.fhda.edu (Brian S Hiles)# Newsgroups: comp.unix.shell# Subject: Re: getting random numbers# Date: 23 Jan 1997 23:27:30 GMT# Message-ID: <5c8s52$eif@tiptoe.fhda.edu># @(#) krand Produces a random number within integer limits# "krand" Korn shell script generates a random number in a# specified range with an optionally specified ``seed'' value.# Author: Peter Turnbull, May 1993# Modified by: Becca Thomas, January 1994# changed the optional third argument to a -s option, converted to# bash v2 syntax -- chet@po.cwru.eduPROGNAME=${0##*/}USAGE="usage: $PROGNAME [-s seed] lower-limit upper-limit"Seed=$$ # Initialize random-number seed value with PIDusage(){ echo ${PROGNAME}: "$USAGE" >&2}errexit(){ echo ${PROGNAME}: "$@" >&2 exit 1}# Process command-line arguments:while getopts "s:" opt; do case "$opt" in s) Seed=$OPTARG ;; *) usage ; exit 2;; esacdoneshift $(($OPTIND - 1))case $# in 2) Lower=$1; Upper=$2 ;; *) usage ; exit 2;;esac# Check that specified values are integers:expr "$Lower" + 0 >/dev/null 2>&1[ $? -eq 2 ] && { errexit "lower ($Lower) not an integer"; }expr "$Upper" + 0 >/dev/null 2>&1[ $? -eq 2 ] && { errexit "upper ($Upper) not an integer"; }expr "$Seed" + 0 >/dev/null 2>&1[ $? -eq 2 ] && { errexit "seed ($Seed) not an integer"; }# Check that values are in the correct range:if (( "$Lower" < 0 )) || [ ${#Lower} -gt 5 ]; then errexit "lower limit ($Lower) less than zero"fiif (( "$Upper" > 32767 )) || [ ${#Upper} -gt 5 ]; then errexit "upper limit ($Upper) greater than 32767"fiif (( "$Seed" < 0 )) || (( "$Seed" > 32767 )) || [ ${#Seed} -gt 5 ]; then errexit "seed value ($Seed) out of range (0 to 32767)"fi(( "$Upper" <= "$Lower" )) && errexit "upper limit ($Upper) <= lower limit ($Lower)"# Seed the random-number generator:RANDOM=$Seed# Compute value, scaled within range:let rand="$RANDOM % ($Upper - $Lower + 1) + $Lower"# Report result:echo $rand
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -