随机数$RANDOM

1、如何生成随机数

系统变量:RANDOM,默认会产生0~32767的随机整数

#打印一个随机数
echo $RANDOM

#查看系统上一次生成的随机数
set | grep RANDOM

#产生0~1之间的随机数
echo $[RANDOM%2]

#产生0~100之间的随机数
echo $[RANDOM%101]

#产生50~100之间的随机数
echo $[RANDOM%51+50]

2、实战案例

随机产生以139开头的电话号码
具体需求:写一个脚本,随机产生1000个以139开头的手机号,并放在phonenum.txt文件中

#!/bin/env bash 

file=phonenum.txt

for i in {1..1000}
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">>./tmp/$file
done

这样写可能会存在重复的号码,我们可以采用以下命令判断是否有重复号码

cat phonenum.txt | sort -u | wc -l  #如果小于1000行,则有重复号码

随机抽出5位幸运观众
具体需求:
1.在上面的1000个手机号里抽奖5个幸运观众,显示出这5个幸运观众。
2.但只显示头3个数和尾号的4个数,中间的都用*代替

#!/bin/env bash 

file=./tmp/phonenum.txt

for i in {1..5}
do
    #获取该文件的行数
    line=`wc -l $file | cut -d " " -f1`
    #获取幸运行数
    luck_line=$[RANDOM%$line+1]
    #获取幸运行所在的幸运号码
    luck_num=`head -$luck_line $file | tail -1`
    #显示到屏幕
    echo "139****${luck_num:6:4}"
    #将幸运号码保存到文件
    echo $luck_num >> `pwd`/tmp/luck.txt
    #删除已经被抽取的幸运号码,防止被再次抽中
    sed -i "/$luck_num/d" $file
done

批量创建用户
需求:批量创建5个用户,每个用户的密码为一个随机数

#!/bin/env bash

#产生一个保存用户名和密码的文件
echo user0{1..5}:itcast[$RANDOM%9000+1000]#@~ | tr ' ' '\n' >> ./tmp/user_pass.file

#循环创建5个用户
for ((i=1;i<=5;i++))
do
    user=`head -$i ./tmp/user_pass.file | tail -1 | cut -d: -f1` #获取用户
    pass=`head -$i ./tmp/user_pass.file | tail -1 | cut -d: -f2` #获取密码
    useradd $user #设置用户
    echo $pass | passwd --stdin $user #设置密码
done
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值