Python - Bash - 随机数

Tam*_*mas 3 python random bash

给定一个脚本'random.sh',其中包含以下内容:

#!/bin/bash

RANDOM=`python -v -d -S -c "import random; print random.randrange(500, 800)"`
echo $RANDOM
Run Code Online (Sandbox Code Playgroud)

运行它会产生给定范围之外的随机数:

[root@localhost nms]# ./random.sh
23031
[root@localhost nms]# ./random.sh
9276
[root@localhost nms]# ./random.sh
10996
Run Code Online (Sandbox Code Playgroud)

将RANDOM变量重命名为RAND,给出了给定范围内的随机数,即

#!/bin/bash

RAND=`python -v -d -S -c "import random; print random.randrange(500, 800)"`
echo $RAND
Run Code Online (Sandbox Code Playgroud)

得到:

[root@localhost nms]# ./random.sh
671
[root@localhost nms]# ./random.sh
683
[root@localhost nms]# ./random.sh
537
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 为什么?:)

ise*_*dev 6

RANDOM是一个预定义的bash变量.从联机帮助页:

RANDOM Each time this parameter is referenced, a random integer between
       0 and 32767 is generated.  The sequence of random numbers may be
       initialized by assigning a value to RANDOM.  If RANDOM is unset,
       it loses its special properties,  even  if  it  is  subsequently
       reset.
Run Code Online (Sandbox Code Playgroud)

因此,如果您真的想使用RANDOM变量名,请执行以下操作:

unset RANDOM
RANDOM=`..your script..`
Run Code Online (Sandbox Code Playgroud)