我需要从一个shell脚本生成一个2000-65000之间的随机端口号。问题是$RANDOM是一个15位的数字,所以我被卡住了!
如果没有大小限制,PORT=$(($RANDOM%63000+2001))将很好地工作。
有没有人有一个例子,我可以这样做,也许从/dev/urandom提取一些东西,并得到它在一个范围内?
我需要从一个shell脚本生成一个2000-65000之间的随机端口号。问题是$RANDOM是一个15位的数字,所以我被卡住了!
如果没有大小限制,PORT=$(($RANDOM%63000+2001))将很好地工作。
有没有人有一个例子,我可以这样做,也许从/dev/urandom提取一些东西,并得到它在一个范围内?
当前回答
如果您不是bash专家,并希望将此转换为基于linux的bash脚本中的变量,请尝试以下方法:
VAR=$(shuf -i 200-700 -n 1)
这样算上VAR,你的投资范围在200到700美元之间。
其他回答
在Bash中从10000000000 -999999999999范围内生成50个数字,并将它们保存到文件filename.csv中
shuf -i 100000000000-999999999999 -n 50 -o filename.csv
这对我来说很管用:
export CUDA_VISIBLE_DEVICES=$((( RANDOM % 8 )))
如果你想让它从1开始而不是0,你可以加1。
这是一个用Python写的
randport=$(python -S -c "import random; print random.randrange(2000,63000)")
还有一个是awk
awk 'BEGIN{srand();print int(rand()*(63000-2000))+2000 }'
或在OS-X以下工作为我:
$ gsort --random-sort
这是另一个。我原以为它对任何东西都适用,但我工作时的centos盒子上没有sort的随机选项。
seq 2000 65000 | sort -R | head -n 1