实际工作中,需要用shell生成指定范围的字符串,以便生成相应的随机数,插入数据库,符合自己的需要。以下为想要生成的几种方式:
1)使用系统变量$RANDOM获得32767以内的随机数
shell中有一个环境变量为$RANDOM,实际的取值范围为:0-32767
echo $RANDOM 15514
echo $(($RANDOM%1000))如果想要获得一个范围内的随机数,可以先把相应的数据做个转换,然后在使用RANDOM。例如想要获得(3000-5000)范围内的随机数,将整个范围值减去最小值,得到(0-2000),使用RANDOM,结果如下:
echo $(($RANDOM%2000+3000))
2.1把RANDOM生成的不同长度的两个随机数组合在一起,例如第一个随机数控制长度为5,第二个长度控制在4,这样生成九位的随机数:
num=`echo $(($RANDOM+10000))$(($RANDOM%1000+1000))`;echo $num中间的参数可以随机调整成自己想要的值
假设随机数的范围是(200000,300000),shell脚本如下:
#!/bin/bash function rand(){ min=$1 max=$(($2-$min+1)) num=$(($RANDOM+10000000)) echo $(($num%$max+$min)) } num=$(rand 200000 300000) echo $num exit 0
rand=`date +%s%N`;echo $(($rand%1000000))
3)生成指定长度,例如长度为10的字符串
#!/bin/bash function randStr { j=0; for i in {a..z};do array[$j]=$i;j=$(($j+1));done for i in {A..Z};do array[$j]=$i;j=$(($j+1));done for ((i=0;i<10;i++));do strs="$strs${array[$(($RANDOM%$j))]}"; done; echo $strs } echo `randStr`
以上生成的字符串中既有字母也有数字,根据实际情况使用即可
4)生成既有数字又有字母的字符串
#使用date 生成随机字符串
date +%s%N | md5sum | head -c 10#使用 /dev/urandom 生成随机字符串
cat /dev/urandom | head -n 10 | md5sum | head -c 10