快速生成随机数、随机字符串、随机验证码

2023年11月24日 551点热度 0人点赞 0条评论

内置RANDOM

# 随机数0-32767
echo $RANDOM
 
# 随机数0-100
echo $(( RANDOM % 100 + 1 ))
 
# 随机数100-199
echo $(( RANDOM % 100 + 100 ))
 
# 随机数10w-20w
echo $((RANDOM * 10 % 100001 + 100000))
 
# 获取 6 位随机字符串/数字
echo $RANDOM |md5sum |cut -c 1-6    # 使用 md5sum 将随机数转换为 MD5 值,再截取n位字符即可

sort 打乱顺序

使用 sort -R 打乱顺序后按长度截取
 
输出0-9 6位随机数
seq 0 9 |sort -R |xargs |tr -d ' ' |cut -c -6
 
输出6位随机小写字母
seq 0 9 |sort -R |xargs |tr -d ' ' |md5sum |tr [0-9A-Z] [a-z] |cut -c -6
 
输出6位随机大写字母
seq 0 9 |sort -R |xargs |tr -d ' ' |md5sum |tr [0-9a-z] [A-Z] |cut -c -6
 
输出6位随机字母数字组合
seq 0 9 |sort -R |xargs |tr -d ' ' |md5sum |cut -c -6

awk 内置随机函数

使用awk内置函数:rand() 和 srand()
 
生成随机数 0-1
awk 'BEGIN{srand(); print rand()}'
 
生成随机数 1-100(int表示转换为整数)
awk 'BEGIN{srand(); print int(rand() * 100)}'
 
生成随机数 1w-10w
awk 'BEGIN{srand(); num=int(rand() * 100000); if(num < 10000) (num += 10000); print num}'

系统 /dev/urandom

6位 0-9 随机数
head /dev/urandom | tr -dc 0-9 | head -c 6
 
6位小写随机字符串
head /dev/urandom | tr -dc a-z | head -c 6
 
6位大写随机字符串
head /dev/urandom | tr -dc A-Z | head -c 6
 
6位验证码,包含数字、大写字符串、小写字符串
head /dev/urandom | tr -dc 0-9a-zA-Z | head -c 6

时间戳 date

利用时间戳生成 19 位整数
date '+%s%N'
 
9位随机数字
date '+%s%N' |cut -c 11-19    # 最好的随机数位最后 9 位,前面 10 位都是顺序往下走
 
9位随机字符串/数字
date '+%s%N' |md5sum  |cut -c 11-19    # 使用 md5sum 将时间戳转换为 MD5 值,再截取n位字符即可

路灯

这个人很懒,什么都没留下

文章评论