shell中生成指定长度的字符串和随机数

实际工作中,需要用shell生成指定范围的字符串,以便生成相应的随机数,插入数据库,符合自己的需要。以下为想要生成的几种方式:

1)使用系统变量$RANDOM获得32767以内的随机数

shell中有一个环境变量为$RANDOM,实际的取值范围为:0-32767

echo $RANDOM
15514

所以如果想要生成1000以内的随机数就可以用RANDOM取余相应的值即可:

echo $(($RANDOM%1000))
如果想要获得一个范围内的随机数,可以先把相应的数据做个转换,然后在使用RANDOM。例如想要获得(3000-5000)范围内的随机数,将整个范围值减去最小值,得到(0-2000),使用RANDOM,结果如下:

echo $(($RANDOM%2000+3000))

2)获得指定长度的随机数,并且这个随机数大于32767

2.1把RANDOM生成的不同长度的两个随机数组合在一起,例如第一个随机数控制长度为5,第二个长度控制在4,这样生成九位的随机数:

num=`echo $(($RANDOM+10000))$(($RANDOM%1000+1000))`;echo $num
中间的参数可以随机调整成自己想要的值
2.2将RANDOM的值放大生成自己想要的随机数:

假设随机数的范围是(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

2.3直接借助于date +%s%N 生成较大的随机数,例如生成1000000以内的随机数:

 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


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值