Shell: Krummes "if" Verhalten

Post Reply
Message
Author
Rossi

Shell: Krummes "if" Verhalten

#1 Post by Rossi »

Mein "if" will nicht so wie ich.

#!/bin/sh
if [ ${A} = 1 ] || [ ${B} = 1 ]; then
do something
fi

Klappt, außer wenn weder "A" noch "B" definiert sind, dann gibt es einen Fehler: [: =: unary operator expected

Soll aber nicht. Ist nur eine der beiden Variablen definiert, kommt der Fehler nicht.
Mein Verständnisproblem liegt nun darin, das eine nicht definierte Variable nun keinen Wert hat (oder: "" ?).
Also ist der Ausdruck richtig und eigentlich nur die Bedingung nicht erfüllt ?

Da die Variablen u.U nicht gebraucht werden (enthalten Statusmeldungen), wollte ich sie eigentlich nicht extra definieren.

Frage: Ist mein Ausdruck nun falsch oder muß ich wirklich die Existenz jeder Variable überprüfen vor dem "if" Ausdruck ?

Jochen

Re: Shell: Krummes

#2 Post by Jochen »

Es sollte reichen, die Variablen in "" einzuschliessen, damit die Shell dort zumindest ein Argument hat - wenn auch ein leeres.

Jochen

Rossi

Re: Shell: Krummes

#3 Post by Rossi »

Danke. Du bist heute eindeutig Linuxer des Tages :)

Bazant

Re: Shell: Krummes

#4 Post by Bazant »

Des Tages ?
Jochen ist der Linuxer des Jahres <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">. Seine Beiträge sind bisher immer zu 100% kompetent - ist mir hier auch schon aufgefallen.
Weiter so und DANKE ... es gibt viel zu wenige davon.

Gruß,
Bazant

Post Reply