一、之前在网上看到,Shell脚本生成8位随机数,有以下方法:
方法1:
top -n 1 -d 1 | md5sum|cksum|cut -c 1-8
或者
top -n 1 -d 1 |cksum|cut -c 1-8
生成速度太慢,对于需要大量的随机数(1000以上)不推荐使用!
方法2:
echo $RANDOM |cksum |cut -c 1-8
这个不一定能保证生成8位数,生成一万次随机数以上,可能会出现空格,诸如:“231387 9”,“3249234 ”等,原因是:cut命令默认以空格为分隔符进行切割,而不仅仅是按照指定的字符位置进行截取。因此,当cksum
命令生成的校验和长度小于8位时,cut
命令将会在校验和后面添加空格,以使其达到8位长度。为了避免输出包含空格,可以使用sed
命令来替换所有空格为无字符,例如:echo $RANDOM | cksum | cut -c 1-8 | sed 's/ //g'
方法3:
openssl rand -base64 4 |cksum |cut -c 1-8
需要安装openssl,才能使用!
方法4:
date +%N |cut -c 1-8
使用系统时间的毫秒级产生随机数,可能生成的结果会少于8位