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

$RANDOMbash0〜32767の範囲の疑似乱数整数を返す内部関数です。

したがって、最初の例では、Pythonスクリプトによって生成された乱数とPythonスクリプトによって生成されていない乱数が表示されbashています。に割り当てると、単にの乱数ジェネレーターRANDOMをシードすることになります。bash

于 2013-01-30T17:55:24.863 に答える
1

$ RANDOMは、bashで事前定義された変数です。

新しいターミナルを開いて試してみてください:

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