01.#!/bin/bash
02.
03.function rand(){
04. min=
105.max=
((
2−
min+1))
06. num=
((
RANDOM+1000000000)) #增加一个10位的数再求余
07. echo
((
num%
max+
min))
08.}
09.
10.rnd=
(rand400000500000)11.echo
rnd
12.
13.exit 0
2.使用date +%s%N
例:生成1~50的随机数
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
01.#!/bin/bash
02.
03.function rand(){
04. min=
105.max=
((
2−
min+1))
06. num=
(date+07.echo
((
num
max+min))
08.}
09.
10.rnd=(rand 1 50)
11.echo $rnd
12.
13.exit 0
3.使用/dev/random 和 /dev/urandom
/dev/random 存储着系统当前运行环境的实时数据,是阻塞的随机数发生器,读取有时需要等待。
/dev/urandom 非阻塞随机数发生器,读取操作不会产生阻塞。
例:使用/dev/urandom生成100~500的随机数,使用urandom避免阻塞。
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
01.#!/bin/bash
02.
03.function rand(){
04. min=
105.max=
((
2−
min+1))
06. num=
(cat/dev/urandom|head−n10|cksum|awk−F ′′′ print$1 ′ )07.echo
((
num
max+min))
08.}
09.
10.rnd=(rand 100 500)
11.echo $rnd
12.
13.exit 0
4.使用linux uuid
uuid 全称是通用唯一识别码,格式包含32个16进制数字,以’-‘连接号分为5段。形式为8-4-4-4-12 的32个字符。
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
01.fdipzone@ubuntu:~/shell$ cat /proc/sys/kernel/random/uuid
02.fd496199-372a-403e-8ec9-bf4c52cbd9cd
例:使用linux uuid 生成100~500随机数
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
01.#!/bin/bash
02.
03.function rand(){
04. min=
105.max=
((
2−
min+1))
06. num=
(cat/proc/sys/kernel/random/uuid|cksum|awk−F ′′′ print$1 ′ )07.echo
((
num
max+min))
08.}
09.
10.rnd=(rand 100 500)
11.echo $rnd
12.
13.exit 0
5.生成随机字符串
例:生成10位随机字符串
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
01.#使用date 生成随机字符串
02.date +%s%N | md5sum | head -c 10
03.
04.#使用 /dev/urandom 生成随机字符串
05.cat /dev/urandom | head -n 10 | md5sum | head -c 10