–=使用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