前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文简述Shell中的random随机数

一文简述Shell中的random随机数

原创
作者头像
reload
发布2024-08-20 00:00:02
3760
发布2024-08-20 00:00:02
举报
文章被收录于专栏:Linux运维

大家好呀!今天简单聊一聊Shell中的random随机数。随机数的生成及应用非常广泛常见,了解随机数的使用也是有必要的。

1、基本用法

bash默认有一个$RANDOM的变量,默认是0~32767。

set |grep RANDOM:查看上一次产生的随机数

代码语言:powershell
复制
# 默认是0~32767
echo $RANDOM
# 查看上一次产生的随机数
set |grep RANDOM

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

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

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

依此类推,产生0~n之间的随机数:echo $[$RANDOM%(n+1)]

巧妙的利用加法:

代码语言:powershell
复制
# 产生50-100之内的随机数
echo $[$RANDOM%51+50]

# 产生三位数的随机数
echo $[$RANDOM%900+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%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" >> phonenum.txt
done

法2:类c风格

代码语言:powershell
复制
#!/bin/bash
# random phonenum
# 循环1000次产生电话号码
for ((i=1;i<=1000;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" >> phonenum.txt
done

法3:while循环

代码语言:powershell
复制
#!/bin/bash
i=1
while [ $i -le 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" >> 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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、基本用法
  • 2、简单应用
  • 3、嵌套循环
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档