前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2分钟带你掌握Shell中random随机数的使用!

2分钟带你掌握Shell中random随机数的使用!

作者头像
reload
发布2024-08-27 16:40:19
1560
发布2024-08-27 16:40:19
举报
文章被收录于专栏:Java后端

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

1、基本用法

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

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

代码语言:javascript
复制
# 默认是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)]

巧妙的利用加法:

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

# 产生三位数的随机数
echo $[$RANDOM%900+100]

2、简单应用

编写一个脚本,产生一个phonenum.txt文件,随机产生以139开头的手机号1000个,每个一行。

1)创建一个random.sh脚本

代码语言:javascript
复制
vim random.sh

2)根据要求编写脚本文件

法1:列表循环

代码语言:javascript
复制
#!/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风格

代码语言:javascript
复制
#!/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循环

代码语言:javascript
复制
#!/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循环

代码语言:javascript
复制
#!/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循环

代码语言:javascript
复制
#!/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循环

代码语言:javascript
复制
#!/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

好了,以上就是今天这篇文章的全部内容了。如果你想及时看到我的文章,只需做这几个动作:点星标、点在看(包括赞)、评论、分享,我就会经常出现在您的常读列表,后面更新都会提醒。感谢大家的关注和支持,祝大家生活美满,学业有成,事业蒸蒸日上!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农后端 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

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