系统变量:RANDOM,默认会产生0-32767之间得随机数
调用变量产生随机数
[root@web2 ~]# echo $RANDOM 10851 [root@web2 ~]# set |grep RANDOM //查看系统上一次生成得随机数 RANDOM=10851
[root@web2 ~]# echo $[$RANDOM%2] //取0-1之间的随机数 1 [root@web2 ~]# echo $[$RANDOM%5] //取0-4之间的随机数 3 [root@web2 ~]# echo $[$RANDOM%39+1] //取1-39之间的随机数 31
取10-99之间任意两位数(思路为取0-89的数然后加10)
[root@web2 ~]# echo $[$RANDOM%90+10] 92 [root@web2 ~]# echo $[$RANDOM%90+10] 52 [root@web2 ~]#
产生100-999之间的任意三位数(首先是0-999,然后算0+多少等于100)
[root@web2 ~]# echo $[$RANDOM%900+100] 195 [root@web2 ~]# echo $[$RANDOM%900+100] 433 [root@web2 ~]# echo $[$RANDOM%900+100] 758
实战案例:随机产生以139开头的电话号码
脚本实现结果,产生一个1.txt的文件,每行都是139开头的电话号码,共200行
思路:
1)产生200个号码首先需要使用循环,循环200次
2)139之后的数字都是随机的,可以每个数字随机产生
3)将产生的每个随机数定义为一个变量,加上139的前缀保存至1.txt
脚本如下:
vim num.sh
#!/bin/bash #产生139开头的号码并保存至文件 for ((i=1;i<=200;i++)) do n1=$[$RANDOM%10] n2=$[$RANDOM%10] n3=$[$RANDOM%10] n4=$[$RANDOM%10] n5=$[$RANDOM%10] n6=$[$RANDOM%10] n7=$[$RANDOM%10] n8=$[$RANDOM%10] echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >>/root/1.txt done
结果验证:
抽取幸运电话号码 200个中选5个,号码中间显示****
思路:
1)确定幸运号码所在的行
2)将号码提取出来 head -随机行号 1.txt |tail -1
3)隐藏信息,中间****替换
4)源文件中删除已中奖号码
补充:##截取变量中的一部分
[root@web2 ~]# n=13970450245 [root@web2 ~]# echo ${n:7:4} //位数是从0开始数 0245
脚本如下:
#!/bin/bash file=/root/1.txt for i in {1..5} do line=`wc -l $file|cut -d' ' -f1` luck_line=$[RANDOM%$line+1] lucky=`head -$luck_line $file|tail -1` echo "139****${lucky:7:4}" echo $lucky >> luck.txt sed -i "/$lucky/d" $file done