引言
- 该系列为个人经常需要将项目代码工程化,所以需要用到shell脚本,前段时间的每日一题沸点活动虽然写了不少,但是因为要满足活动要求,所以很多函数等语法无法介绍完全,该文将介绍一个函数具体详细一些的用法
正文 关于shell中的随机数函数RANDOM
RANDOM是 Bash 中用来生成 0 至 32767 之间随机整数的一个内置函数(而非常量)- 利用RANDOM取随机数的用法
- 例如:我们想要产生0-100范围内的数:RANDOM%100)) 在符号的。(All tokens in the expression undergo parameter expansion, string expansion, command substitu-tion, and quote removal.)
- 用这个环境变量对101取模即可。
- 示例如下
- 如果取值范围是从0开始,那么就可以简单一些使用简写
产生0~1之间的随机数
echo $[$RANDOM%2]
产生0~3之间的随机数
echo $[$RANDOM%4]
产生0~9内的随机数
echo $[$RANDOM%10]
产生0~100内的随机数
echo $[$RANDOM%101]
- 如果取值范围不是从0开始,那么就需要注意使用方法
# 下面这个取值范围+1,1表示start,1+100=101,故100是实际能取到的end值
num=$[RANDOM%100+1]
# 如果想得到1–68范围内的数 :
num=$(($RANDOM%68+1))
# 如果想得到6–87范围内的数 :
num=$(($RANDOM%82+6))
- 同样类比可以生成限定范围的随机数
# 产生50-100之内的随机数
echo $[$RANDOM%51+50]
# 产生三位数的随机数
echo $[$RANDOM%900+100]
- 注意执行包含RANDOM函数的shell脚本时候,使用./或者sh来执行shell脚本可能会报错:
sh: arithmetic expression: expecting primary ****
- 换成bash执行即可,关于bash和sh执行有何区别,下篇文章单独介绍,以下为使用该函数设计的一个简单小游戏
# 使用 read 提示用户猜数字,-p 表示后面是要输出的文本,这个cai其实是一个变量名称
# 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),
# ‐lt(小于),‐le(小于等于)
# fi表示if语句的结束
while :
do
read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai
if [ $cai -eq $num ]
then
echo "恭喜,猜对了"
exit
elif [ $cai -gt $num ]
then
echo "Oops,猜大了"
else
echo "Oops,猜小了"
fi
done