Syntaxfehler?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Thomy, 12.12.2007.

  1. Thomy

    Thomy Jungspund

    Dabei seit:
    20.10.2005
    Beiträge:
    21
    Zustimmungen:
    0
    Hi Leute


    ich programmiere im Moment ein bisschen was mit Bash und bei:

    Code:
    while [ $read -lt "1" -o $read -gt $GRPC ]
    do
        read prim_ask
    done
    kommt immer "too many arguments". Was mache ich falsch ($read is ne Eingebe und $GRPC ist ein Maximalwert). Der Wer soll einfach nicht kleiner als 1 oder größer als $GRPC sein.


    Gruß Thomy
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. P17

    P17 Schandensbegrenzer

    Dabei seit:
    06.12.2007
    Beiträge:
    196
    Zustimmungen:
    0
    Ort:
    Germany
    Poste doch mal das ganze script.
    read ist ein shelleigener Befehl. Den kannst du afaik nicht als Variable benutzen.
     
  4. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Bin mir nicht ganz sicher, aber bei less than (lt) und greather than (gt) müssen die Zahlen nicht mit "" verglichen werden, da er es sonst als String ansieht.

    Also [ $read -lt 1 ...]
     
  5. Psyjo

    Psyjo Routinier

    Dabei seit:
    15.11.2005
    Beiträge:
    259
    Zustimmungen:
    0
    Ort:
    Hinter'm Berg
    So ist es. Möglicherweise mag die Bash auch die [ einzelnen Brackets ] nicht; versuche doch mal [[ zwei Brackets ]] ;)


    etwa so:
    Code:
    # if [[ 1 -gt 2  ]]; then echo muh; fi
    # if [[ 1 -lt 2  ]]; then echo muh; fi
    muh
    
    Psyjo
     
  6. #5 bytepool, 12.12.2007
    Zuletzt bearbeitet: 12.12.2007
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Ehm, nee, "[ bla ]" ist das selbe wie "test bla", und "[[ bla ]]" ist nochmal eine andere Auswertungsart der bash mit etwas anderer Syntax. Siehe man bash ;)

    edit:
    @Thomy
    Dir ist schon klar, dass du da eine endlos Scheife programmierst, ne? Weil du hast kein Abbruch Kriterium fuer while dass irgendwann mal wahr waere.
    Ah, ich glaube ich weiss auch wo dein Fehler ist, bei mir funktioniert das ganze naemlich einwandfrei. Das "too many arguments" Problem bekommst du, sobald eine von den beiden Variablen $read oder $GRPC leer ist, dann wird naemlich aus '[ $read -lt "1" ]' einfach '[ -lt "1" ]'.
    D.h. wenn du das so machen willst, musst du natuerlich beide Variablen auf jeden Fall schonmal initialisiert haben. Das Problem hatten wir hier letztens schonmal...

    edit2:
    Ah, deine endlos Schleife und dein Problem koennten auch einfach von einem Tipp Fehler kommen. Vermutlich wolltest du schreiben:
    Code:
    while [ $prim_ask -lt "1" -o $prim_ask -gt $GRPC ]
    
    Nicht wahr? ;)
    Aber auch in dem Fall musst du prim_ask vorher initialisiert haben.

    mfg,
    bytepool
     
Thema:

Syntaxfehler?

Die Seite wird geladen...

Syntaxfehler? - Ähnliche Themen

  1. Syntaxfehler in Skript

    Syntaxfehler in Skript: Irgendwo muss sich in meinem Skript ein Fahler eingeschlichen haben. Da ich auch nach längerer Suche keine syntaktischen Fehler gefunden habe, bin...
  2. syntaxfehler beim teilen mit expr?!

    syntaxfehler beim teilen mit expr?!: guten abend ;) hier erstmal mein skript. es soll die anzahl der kollisionen, die anzahl der tx und rx pakete anzeigen. #!/bin/bash...