Syntaxfehler?

T

Thomy

Jungspund
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
 
Poste doch mal das ganze script.
read ist ein shelleigener Befehl. Den kannst du afaik nicht als Variable benutzen.
 
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 ...]
 
Also [ $read -lt 1 ...]

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
 
Möglicherweise mag die Bash auch die [ einzelnen Brackets ] nicht; versuche doch mal [[ zwei Brackets ]] ;)
Psyjo

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
 
Zuletzt bearbeitet:

Ähnliche Themen

script sshpass

Shell Skript beschleunigen

Textdatei zeilenweise in durchnummerierte Variablen schreiben

Nach Variable fragen wenn die nicht als Parameter eingegeben wurde

Bash Skript: [[: not found Fehler

Zurück
Oben