Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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

Geschrieben

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

Geschrieben

joah, ich auch.

Was hast Du da für ein Linux ?

was sagt "expr --version" ?

Hast Du evt. ein anderes expr im Suchpfad vor dem des Linux ?

Formal alles korrekt und richtig

Geschrieben

Hallo,

Es handelt sich um ein Ubuntu 10.04 LTS - Lucid Lynx - in einem VMWare-Player Version 3.1.3 build-324285. expr befindet sich in der Version 7.4.

Kann das Problem auch mit dem Ausführungsort des Scriptes zusammenhängen?

Momentan befindet sich das Script in /opt/scripte/.

Geschrieben
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?

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...