Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

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

  • Autor

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

  • Autor

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

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.