[shell-skript] Zufallszahl erstellen

G

Gast19092019

Guest
Hi,

ich mach es mal kurz und schmerzlos.
Wie kann ich eine Zufallszahl zwischen 0 und 4 in der Bourne-Shell erstellen?

Danke im vorrraus, macbig2k1
 
o.g. Beispiel ist für Bash, wenn ich richtig gesehen hab...

Bourne-Shell hat ja keinen eigenen Zufallszahlen-Generator. Du kannst aber jenen der Korn-Shell (z.B.) nehmen. Oder awk bzw perl bemühen... Je nach dem was zu Verfügung steht...
z.B. über perl
Code:
z=`perl -e 'print int(rand(5))'`
o.g. Beispiel wenn 0 - 4 erlaubt ist
 
Die bash (und auch die Kornshell) sind Erweiterungen der Bourneshell. Bourneshell ist die "Basis-Shell" und wird z.B. auf Unix-Systemen zuerst gestartet, weshalb dort bootskripte z.B. in Bourneshell-Syntax geschrieben sind.. Einen Zufallszahlen-Generator gibts z.B. nicht bei bourneshell, aber bei bash und ksh..

Sollte der threadersteller, allerdings bash anstatt bourneshell zur Verfügung stehen, dann wäre es mit den Zufallszahlen (0-4) so möglich:

Code:
expr $RANDOM % 5
 
Es hat mit der Bourne shell funktioniert.
Kurzer auszug:

#!/bin/sh
....
bereich=5
nummer=$RANDOM
let "nummer %= $bereich"
....

und schon hatte ich meine Zahlen zwischen 0 und 4


PS:
Vorraussetzung war: Muß unter jedem Unix startbar sein, also für die Bourne.
 
Das entspricht ja der Lösung für die bash oder korn- und imho nicht für die bourneshell - entweder läuft bei dir eine Erweiterung oder ne andere Shell?!?

Jedenfalls ist genau dieses "RANDOM" eine Systemvariable, welche nicht in der normalen Bourneshell vorhanden ist... steht zumindest in diversen Quellen - z.B. -hier-
How does bash differ from sh, the Bourne shell?

(..)
Things bash has that sh does not:
(..)
variables: BASH, BASH_VERSION, (..), RANDOM, SECONDS,

LINENO, HISTCMD, HOSTTYPE, (..)

Die Frage ist aber, ob es so tatsächlich auch unter jedem Unix läuft?

___________________________________________________
Edit:
Habe gerade noch DIES gefunden:

Identifying your shell

Type the following line:

echo $RANDOM

and then press the Enter key. If you get a blank line it's the Bourne shell (sh). If you get the following line:

RANDOM: Undefined variable

it's the C shell (csh or tcsh). If you get a five-digit random number, it's the Korn shell (ksh) or BASH. To tell ksh from BASH, type

help

If you get a page of command descriptions, you have BASH. If not, you've got the Korn shell.


Demnach läuft bei Dir, wenn deine Lösung funktioniert NICHT die Bourneshell
 
Zuletzt bearbeitet:
Hm....
komisch......


Ich hatte zusätzlich noch ein wenig im Netz gesucht und genau diesen (meinen) "Quelltext"-Vorschlag gefunden.

Naja, hauptsache es läuft auf unseren Hochschulrechnern und der Prof. ist zufrieden (und ich habe meine Prüfungszulassung), dass ist das wichtigste.
 
jo klar... falls du ganz sicher gehen willst, habe ich in meinem Buch noch einen Tipp zur Bourneshell gefunden, wo auf die Kornshell, sofern sie zur Verfügung steht, zurückgegriffen wird.

z=`ksh -c 'echo $RANDOM % 5'`
 
Auf vielen Linux Systemen gibts nur die Bash und keine Sh mehr, /bin/sh ist dann einfach ein symbolischer Link zur Bash.
 
Zurück
Oben Unten