PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : unary operator expected



netmaster
02.05.03, 00:47
Hallo.

Habe schon wieder ein Fehler, den ich nicht beheben kann.

./test: line 26: [: !=: unary operator expected

Zeile 26 steht: while [ $auswahl != 9 ] ; do

Was hab ich denn hier schon wieder falsch gemacht? :ugly:

linuxhanz
02.05.03, 11:44
Hi schau Dir doch mal andere Skripte in /etc/init.d an

melody lee
02.05.03, 11:51
Ich schätze, die Variable $auswahl gibt es zu dem Zeitpunkt, da Du deren Wert abfragst noch nicht. Setz mal "auswahl=0" irgendwo vor die while-Schleife. Ausserdem vergleichst Du mit "=" Strings. Geht hier zwar, aber Zahlen vergleicht man normalerweise mit (in diesem Fall) "-ne". "man test" zeigt die anderen Möglichkeiten.

netmaster
02.05.03, 12:16
Also, meine Abfrage sieht so aus.

declare auswahl=`cat $dir/log.akt` (da steht ne Zahl drin zw.
if [ $auswahl = 1 ] ; then
..
..

wenn ich es jetzt ändere lt. man test in

declare auswahl=`cat $dir/log.akt`
if [ $auswahl -ne 1 ] ; then --> oder if $auswahl -ne 1 ; then

Dann bekomme ich die gleichen Fehlermeldungen.

Wenn ich mir dann auf der man-page test das ansehe, hab ich doch keine Fehler.

STRING1 = STRING2
the strings are equal

STRING1 != STRING2
the strings are not equal


:ugly: :ugly: :ugly:

move
02.05.03, 12:28
Das Problem ist eher das die Variable $auswahl leer ist.
Darum wie melodylee schon geschrieben hat, entweder vor die while schleife auswahl=0
Eine andere Möglichkeit wäre $auswahl in Anführungszeichen zu setzen "$auswahl"
Sollte man auch immer machen wenn nicht klar ist ob der Variablen
ein Wert zugewiesen wird.

Zeile 26 steht: while [ "$auswahl" != 9 ] ; do

gruß

netmaster
02.05.03, 12:48
Super, mit den Anführungszeichen funtzt es ohne Probs.

1000 Dank.