大家好呀!今天简单聊一聊Shell中的random随机数。随机数的生成及应用非常广泛常见,了解随机数的使用也是有必要的。
1、基本用法
bash默认有一个$RANDOM的变量,默认是0~32767。
set |grep RANDOM:查看上一次产生的随机数
# 默认是0~32767
echo $RANDOM
# 查看上一次产生的随机数
set |grep RANDOM
# 产生0~1之间的随机数
echo $[$RANDOM%2]
# 产生0~2之间的随机数
echo $[$RANDOM%3]
# 产生0~100内的随机数
echo $[$RANDOM1]
依此类推,产生0~n之间的随机数:echo $[$RANDOM%(n 1)]
巧妙的利用加法:
代码语言:powershell复制# 产生50-100之内的随机数
echo $[$RANDOMQ 50]
# 产生三位数的随机数
echo $[$RANDOM�0 100]
2、简单应用
编写一个脚本,产生一个phonenum.txt文件,随机产生以139开头的手机号1000个,每个一行。
1)创建一个random.sh脚本
代码语言:powershell复制vim random.sh
2)根据要求编写脚本文件
法1:列表循环
代码语言:powershell复制#!/bin/bash
# 循环1000次产生电话号码并保存到文件
for i in {1..1000}
do
n1=$[RANDOM]
n2=$[RANDOM]
n3=$[RANDOM]
n4=$[RANDOM]
n5=$[RANDOM]
n6=$[RANDOM]
n7=$[RANDOM]
n8=$[RANDOM]
echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >> phonenum.txt
done
法2:类c风格
代码语言:powershell复制#!/bin/bash
# random phonenum
# 循环1000次产生电话号码
for ((i=1;i<=1000;i ))
do
n1=$[$RANDOM]
n2=$[$RANDOM]
n3=$[$RANDOM]
n4=$[$RANDOM]
n5=$[$RANDOM]
n6=$[$RANDOM]
n7=$[$RANDOM]
n8=$[$RANDOM]
echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >> phonenum.txt
done
法3:while循环
代码语言:powershell复制#!/bin/bash
i=1
while [ $i -le 1000 ]
do
n1=$[$RANDOM]
n2=$[$RANDOM]
n3=$[$RANDOM]
n4=$[$RANDOM]
n5=$[$RANDOM]
n6=$[$RANDOM]
n7=$[$RANDOM]
n8=$[$RANDOM]
echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >> phonenum.txt
let i
done
使用break
3、嵌套循环
所谓嵌套循环,即一个循环体内又包含另一个完整的循环。在外部循环的每次执行过程中都会触发内部循环,直至内部完成一次循环,才接着执行下一次的外部循环。
for、while和until循环可以相互嵌套
eg:以再经典不过的打印九九乘法表为例
法1:for循环
代码语言:powershell复制#!/bin/bash
for ((y=1;y<=9;y ))
do
for ((x=1;x<=$y;x ))
do
echo -ne "$x*$y=$[$x*$y]t"
done
echo
echo
done
法2:while循环
代码语言:powershell复制#!/bin/bash
y=1
while [ $y -le 9 ]
do
x=1
while [ $x -le $y ]
do
echo -ne "$x*$y=$[$x*$y]t"
let x
done
echo
echo
let y
done
法3:util循环
代码语言:powershell复制#!/bin/bash
y=1
until [ $y -gt 9 ]
do
x=1
until [ $x -gt $y ]
do
echo -ne "$x*$y=$[ $x*$y ]t"
let x
done
echo
echo
let y
done