背景:
创建账户时我们需要配置初始随机密码,使用手机号注册时需要随机验证码,抽奖活动需要随机点名,俄罗斯方块游戏需要随机出形状。这些案例都在说明一个问题,随机数据很重要!而在 Shell 脚本中如果需要生成随机数据有哪些方式呢?下面我们依次看看都有哪些方式。
方法一:使用字符串截取提取随机密码
定义字符串取值范围,利用随机截取一位,通过循环迭代,拼凑取出适合长度的字符串
# 自定义变量: 例如 10 个数字+52 个字符(26位英文字母大小写)
key="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
| randpass(){ |
| if [ -z "$1" ];then |
| echo "randpass 函数需要一个参数,用来指定提取的随机数个数." |
| return 127 |
| fi |
| |
| |
| pass="" |
| for i in `seq $1` |
| do |
| num=$[RANDOM%${#key}] |
| local tmp=${key:num:1} |
| pass=${pass}${tmp} |
| done |
| echo $pass |
| } |
| randpass 8 |
方法二:使用命令生成随机数据
Linux 本身有些命令是可以提供随机字符串,或者是对一些字符串进行加密,通过调用这些命令生成的字符串配合一些截取命令,可以轻松获得指定长度的随机字符串。
| [root@centos7 ~] |
| d1c7c974-2e94-4f31-bdd7-0b2f697aea6b |
| [root@centos7 ] |
| ba1f2511fc30423bdbb183fe33f3dd0f |
| [root@centos7 ] |
| [root@centos7 ] |
| 81210f |
| [root@centos7 ] |
| 433bacdc |
| 通过时间(date)获得随机数 |
| |
| [root@centos7 /] |
| 1661868951447501276 |
| 通过UUID生成随机数 |
| [root@centos7 /] |
| 54b63594-98f3-4f41-b50f-3c152dce170e |
方法三:使用设备文件生成随机数据
在 Linux 操作系统中默认提供了两个可以生成随机数据的设备文件:/dev/random 和/dev/urandom
| 提取 10 位包含字母、数字和下画线的随机数据。 |
| [root@centos7 ~] |
| aw23954A9 |
| [root@centos7 ~] |
| LiV9uZVyJN |
| 提取 10 位包含存数字的随机数据。 |
| [root@centos7 ~] |
| 7565203215 |
| [root@centos7 ~] |
| 5690607214 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律