我需要从一个shell脚本生成一个2000-65000之间的随机端口号。问题是$RANDOM是一个15位的数字,所以我被卡住了!
如果没有大小限制,PORT=$(($RANDOM%63000+2001))将很好地工作。
有没有人有一个例子,我可以这样做,也许从/dev/urandom提取一些东西,并得到它在一个范围内?
我需要从一个shell脚本生成一个2000-65000之间的随机端口号。问题是$RANDOM是一个15位的数字,所以我被卡住了!
如果没有大小限制,PORT=$(($RANDOM%63000+2001))将很好地工作。
有没有人有一个例子,我可以这样做,也许从/dev/urandom提取一些东西,并得到它在一个范围内?
当前回答
在Mac OS X和FreeBSD上,你也可以使用jot:
jot -r 1 2000 65000
其他回答
或在OS-X以下工作为我:
$ gsort --random-sort
shuf -i 2000-65000 -n 1
享受吧!
编辑:范围是包括在内的。
生成范围为[$floor,$ceil]的随机数,不依赖:
$(((RANDOM % $(($ceil- $floor))) + $floor))
在2000到65000之间生成100个数字:
for i in $(seq 100); do echo $(((RANDOM % $((65000 - 2000))) + 2000));done
在Bash中从10000000000 -999999999999范围内生成50个数字,并将它们保存到文件filename.csv中
shuf -i 100000000000-999999999999 -n 50 -o filename.csv
如果您不是bash专家,并希望将此转换为基于linux的bash脚本中的变量,请尝试以下方法:
VAR=$(shuf -i 200-700 -n 1)
这样算上VAR,你的投资范围在200到700美元之间。