Shell脚本生成随机数
前言
前段时间写了一个Shell需要用到随机数生成,才发现Linux自带的$RANDOM只能生成0—32767之间的随机数,并且不能自定义范围,不太方便直接使用,于是写了这个Shell脚本
思路
- 用head查看/dev/urandom随机生成的10个字节
- 用cksum生成校验码,再用其生成随机数$num
- 将$num和随机数范围最大值$2求余,求得结果为0到$2减1;再把求余值$2加上1,这样就已经把范围缩小到0到$2
- 求余后加上最小值$1,这样就把最小值范围缩小到了$1
- 综上所述,再将求余值减去后面加上的最小值$1,将范围锁定到$1-$2,得到如下代码
代码
random.sh
1 |
|
最终精简版
random.min.sh
1 | echo $(($(head /dev/urandom -c 10 | cksum | awk '{print $1}')%$(($2-$1+1))+$1)) |
使用方法
生成3到7之间的随机数
1 | bash random.min.sh 3 7 |
也可以作为函数使用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CandyRaws!