Zum Inhalt springen

Shell-Script (Lotto) Hilfe


S-k-y.F-i-r-e

Empfohlene Beiträge

Hallo Fachinformatiker!

Ich arbeite mich Momentan in das Shell-Scriping von Linux ein. Ich stoße jetzt allerdings vor ein Problem, dass ich nicht selbst lösen kann.

Es soll ein Script erstellt werden, dass 6 Zufallszahlen generiert und diese ausgibt.

Mein Script sieht bisher so aus:

clear

i=0


echo `touch lotto_temp`


for i in `seq 1 6`

        do

                echo `expr $RANDOM % 49 + 1 >> lotto_temp`

                echo $i

        done

echo `sort -n lotto_temp`

echo `rm lotto_temp`
Ausgegeben wird mir folgendes:

expr: Syntaxfehler

1

expr: Syntaxfehler

2

expr: Syntaxfehler

3

expr: Syntaxfehler

4

expr: Syntaxfehler

5

expr: Syntaxfehler

6

Mich persönlich macht im Moment stuzig, dass ich den Befehl:
 expr $RANDOM % 49 + 1 >> lotto_temp 

ausführen kann, ohne das ein Syntaxfehler ausgegeben wird.

Hat irgendjemand von euch eine Ahnung, warum das Befehl allein sauber läuft, im Kontext des Scripts aber nicht?

Link zu diesem Kommentar
Auf anderen Seiten teilen

also zunächst gefallen mir Deine Quotes nicht.

Ich empfehle:

echo `expr $RANDOM % 49 + 1 ` >> lotto_temp

Formal ist das ansonsten korrekt und wird bei mir auf die schnelle auch ausgeführt. Ein mögliches Problem mit Scripten sind nicht sichtbare Sonderzeichen, die enstehen z.b. durch Cursortasten mit vi ( wenn die Einstellung nicht richtig stimmt ) oder ähnliches.

Im Zweifel die fehlerhafte Zeile löschen und komplett neu eintippen ;)

Nur weil Du nix siehst heisst das nicht dass da nix ist ;)

seq 1 6 ????

Bei 400 Kommandos eines UNIX Systems muß man nicht versuchen auf Krampf alle zu benutzen :D

EDIT: Die unnötige Benutzung von Tempfiles wird bei uns mit Haue bestraft ! :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zuammen,

schonmal vielen dank, an alle die mir helfen wollten.

Leider führte keiner eurer Vorschläge zum gewünschten Erfolg.

Weder

 echo `expr $RANDOM % 49 + 1` >> lotto_temp
noch
 expr $RANDOM % 49 + 1 >> lotto_temp
Auch ein erneutes Schreiben der betroffenen Zeile brachte nichts. Aktueller Scriptcode sieht folgendermaßen aus:
clear

i=0


echo `touch lotto_temp`


for i in 1 2 3 4 5 6

        do

                expr $RANDOM % 49 + 1 >> lotto_temp

                echo $i

        done

echo `sort -n lotto_temp`

echo `rm lotto_temp`
Fehlermeldung nach wie vor so:
expr: Syntaxfehler

1

expr: Syntaxfehler

2

expr: Syntaxfehler

3

expr: Syntaxfehler

4

expr: Syntaxfehler

5

expr: Syntaxfehler

6

Link zu diesem Kommentar
Auf anderen Seiten teilen

keine Ahnung was das ist. Benutz ein anderes Linux.

Lade einfach mal ein iso einer Live-Distribution als CD-Laufwerk, wechsel mit chroot die Umgebung und probier das Skript da noch mal.

btw. bei mir liegen die coreutils in Version 8.5 vor, Distribution: aptosid

Welche Shell benutzt du?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...