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

目录

1. 内置RANDOM

2. sort 打乱顺序

3. awk 内置随机函数

4. 系统 /dev/urandom

5. 时间戳 date


1. 内置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位字符即可

2. 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

3. 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}'

4. 系统 /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

5. 时间戳 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位字符即可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值