IPOR Sircer beantwortet Sie bereits richtig. Die Lösung besteht darin, den Wert $RANDOM
in einer Variablen zu speichern.
Um zu erklären, warum Ihre Frage
Jedes Mal wenn ein Bug- hatte man $RANDOM
nennen, es tut genau das, was es eine Zufallszahl to- erzeugen soll. Also, wenn Sie es mehrmals aufrufen, wird es verschiedene Zufallszahlen generieren. Also wird jeder Aufruf einen anderen Namen ergeben. Wenn Sie es jedoch einmal aufrufen und in einer Variablen speichern, kann es nicht mehr geändert werden (da es nur einmal aufgerufen wurde).
$RANDOM
ist nicht der beste Weg, um Zufallszahlen zu generieren. Um dies zu testen, können Sie die folgenden- tun
for j in {1..500}
do
for i in {1..1000}
do
echo "$RANDOM"
done | awk '{a+=$1} END {print a/NR}'
done
Was dieses kleine Skript tut, ist tausend $ RANDOM Ausgänge (innere Schleife) erzeugen und dann den Durchschnitt der 1000-Nummern. Dies geschieht in diesem Beispiel 500 mal (äußere Schleife). Sie werden sehen, dass die Durchschnittswerte über tausend Iterationen von $RANDOM
einander sehr ähnlich sind (um 16000 herum). Dies zeigt, dass in den verschiedenen Zeiten, in denen Sie es nennen, keine sehr gute Variation beobachtet wird.
Bessere Möglichkeiten sind der Befehl awk
srand
.
See [Warum Sie die Ausgabe von ls nicht analysieren sollte (1)] (http://mywiki.wooledge.org/ParsingLs) – Inian