–=使用date产生随即数字串或字符串===
%s为秒 %N为纳秒,这样就避免了重复
[root@nezhdb01 tmp]# cat lbw.sh
#!/bin/bash
n=$(date +%s%N)
echo $n
echo $n |wc -m
[root@nezhdb01 tmp]# ./lbw.sh
1563637164657358637
20
[root@nezhdb01 tmp]# ./lbw.sh
1563637165832149457
20
在秒和纳秒的基础上再加上random产生的随即数字,就更加不会出现重复了。
[root@nezhdb01 tmp]# cat lbw.sh
#!/bin/bash
n=$(date +%s%N$RANDOM)
echo $n
echo $n |wc -m
[root@nezhdb01 tmp]# ./lbw.sh
156363707864948743310153
25
[root@nezhdb01 tmp]# ./lbw.sh
156363708283283217430131
25
将产生的随机数字经过md5sum加密转换为字符串
[root@nezhdb01 tmp]# cat lbw.sh
#!/bin/bash
n=$(date +%s%N$RANDOM | md5sum)
echo $n
echo $n |wc -m
[root@nezhdb01 tmp]# ./lbw.sh
3e34641f9832f9b8355c36a2a549f77e -
35
[root@nezhdb01 tmp]# ./lbw.sh
837cb5a97f19385ce62d793f30c28005 -
35
使用tr转换命令,将数字替换为大写字母,这样就可以生成随即的字母了
[root@nezhdb01 tmp]# cat lbw.sh
#!/bin/bash
n=$(date +%s%N$RANDOM | md5sum | tr [0-9] [A-Z])
echo $n
echo $n |wc -m
[root@nezhdb01 tmp]# ./lbw.sh
cDDBCHAFCJGEdFAebIBabdeHHcDGfGde -
35
[root@nezhdb01 tmp]# ./lbw.sh
DCdJDBfFBHBIceHEdEbDGaCGeJCDACIB -
35
[root@nezhdb01 tmp]# ./lbw.sh
CGIfGIcfceDfdcaDdCIAfcbbfdEAGdAI -
35
使用cut命令截取前10个字符
[root@nezhdb01 tmp]# cat lbw.sh
#!/bin/bash
n=$(date +%s%N$RANDOM | md5sum | tr [0-9] [A-Z] | cut -c 1-10)
echo $n
echo $n |wc -m
[root@nezhdb01 tmp]# ./lbw.sh
CEcbfacEdD
11
[root@nezhdb01 tmp]# ./lbw.sh
AJcEBGeJeD
11
使用md5sum加密后,可以用tr 转换将字母全部转换为数字,就生产了随即的数字串
[root@nezhdb01 tmp]# cat lbw.sh
#!/bin/bash
n=$(date +%s%N$RANDOM | md5sum | tr [a-z] [0-9])
echo $n
echo $n |wc -m
[root@nezhdb01 tmp]# ./lbw.sh
35198437745666559617683605271559 -
35
[root@nezhdb01 tmp]# ./lbw.sh
56275898023555409365997373164457 -
35
[root@nezhdb01 tmp]# ./lbw.sh
53445460512210720971141946239073 -
35
截取一部分数字串,就可以生成固定长度的数字串。
[root@nezhdb01 tmp]# cat lbw.sh
#!/bin/bash
n=$(date +%s%N$RANDOM | md5sum | tr [a-z] [0-9] | cut -c 1-10)
echo $n
echo $n |wc -m
[root@nezhdb01 tmp]# ./lbw.sh
1259206094
11
[root@nezhdb01 tmp]# ./lbw.sh
5449081459
11
[root@nezhdb01 tmp]# ./lbw.sh
8074603062
11