PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash ausser Kontrolle???



robert
19-06-2000, 18:33
Tja, jetzt bin ich etwas ratlos...

Plötzlich bekomme ich in Shell-Scripten bei folgendem immer die Fehlermeldung "Command not found...".



SV1="irgend ein string"
SV2="noch ein string"

if [ "$SV1" = "$SV2" ]; then
# hier wird irgend was getan
fi


Statt also einen String-Verlgeich zu machen, wird $SV1 und $SV2 als Kommando interpretiert.
Hat jemand eine Ahnung woran das liegen könnte???

Robert

christophwth
19-06-2000, 19:01
Hi

Robert, korregier mich wenn ich falsch liege. Aber führt if [ "$SV1" = "$SV2" ]; nicht eine Zuweisung aus. Und der Vergleich müßte mit == geschrieben
werden ?

Gruss
Christoph

Backi
19-06-2000, 19:35
@Christoph: Das ist schon richtig so. bash != C

@robert: Bei mir (RH 6.2, bash 1.14.7) klappt das ohne Probleme. Welche bash setzt Du ein? Gibt which SV oder locate SV irgend etwas sinnvolles aus?

Gruß,
Backi

blackbird
19-06-2000, 21:52
hi robert!

schreib hier zwar wieder was was vermutlich nicht wirklich direkt zur lösung beiträgt, aber wer weiss..

bei mir klappts auch einwandfrei, unter suse 6.0 bash 2.02.1(1) i686

grüsse blackbird

robert
20-06-2000, 07:02
Ich hab den Fehler gefunden...

Und wie üblich sitzt der Teufel im Detail.

Es lag gar nicht direkt an der If-Anweisung, sondern schon an den Zuweisungen an die Variablen direkt vor der If-Anweisung.

Durch einen Fehler wurden bei einer globalen Ersetzungsroutine, welche eigentlich etwas anderes ersetzen sollte, alle "=" Zeichen durch " = " ersetzt. Soll heißen, vor und nach dem "=" war ein Leerzeichen. In dem Moment wird die Zuweisung an die Variablen natürlich falsch interpretiert.
Probiert es mal selber aus, setzt bei einer Variablenzuweisung vor und nach dem "=" Zeichen ein Leerzeichen.

Dumm gelaufen... :-)

Robert