3

给定一个包含以下内容的脚本“random.sh”:

#!/bin/bash

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

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

[root@localhost nms]# ./random.sh
23031
[root@localhost nms]# ./random.sh
9276
[root@localhost nms]# ./random.sh
10996

将 RANDOM 变量重命名为 RAND,给我来自给定范围的随机数,即

#!/bin/bash

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

给出:

[root@localhost nms]# ./random.sh
671
[root@localhost nms]# ./random.sh
683
[root@localhost nms]# ./random.sh
537

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

4

3 回答 3

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.

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

unset RANDOM
RANDOM=`..your script..`
于 2013-01-30T17:55:12.230 回答
2

$RANDOM是一个内部bash函数,它返回 0-32767 范围内的伪随机整数。

因此,在第一个示例中,您会看到由 Python 脚本生成的随机数,bash而不是由 Python 脚本生成的随机数。当您分配给 时RANDOM,您只是在播种bash的随机数生成器。

于 2013-01-30T17:55:24.863 回答
1

$RANDOM 是 bash 中的预定义变量。

打开一个新终端并尝试一下:

> echo $RANDOM
6007
> echo $RANDOM
122211
于 2013-01-30T17:56:19.680 回答