$(RANDOM) が $(ls -la) と異なるように動作するのはなぜですか?

$(RANDOM) が $(ls -la) と異なるように動作するのはなぜですか?

Bashでコマンドを置き換えるには、次のようにします。

hello=$(ls -la)  
echo "$hello"

ただし、以下のコマンドで同じ操作を実行すると、失敗して乱数が見つからないというメッセージが表示されます。

hell=$(RANDOM)
echo "$hell"

算術拡張を使用すると、これを克服できます。

hell=$((RANDOM))
echo "$hell"

以下がうまくいかないのはなぜですか?私が理解したところによれば、ランダムも命令なので、数値エコーを受けなければなりません。

hell=$(RANDOM)
echo "$hell"

ベストアンサー1

RANDOMコマンドではなく変数です。ただ1セットは貝殻で構成されていますが、何か特別なものがあります。:

RANDOM このパラメーター(*)が参照されるたびに、0 ~ 32767 の任意の整数に拡張されます。この変数に値を割り当てると、乱数ジェネレータがシードされます。 RANDOM が設定されていないと、後でリセットしても特殊属性が失われます。

echo "$RANDOM"より「一般的な」変数などの変数を使用する方法HOMEと同じですBASH_VERSION。もちろん${RANDOM}、一般括弧の代わりに中括弧を使用することも可能です。

なしで算術拡張に使用$できます算術コンテキスト、すべての変数で動作します。

式内では、シェル変数はパラメーター拡張構文を使用せずに名前で参照することもできます。

(例:x=4; echo "$((x*x))"印刷物16

(*ここで変数とパラメータの違いは無視しても構いません。)

おすすめ記事