Warum wird die folgende IF-Bedingung in ksh immer als wahr ausgewertet?
Beachten Sie, dass der folgende Code wie erwartet funktioniert:
if [[ $SOME_VARIABLE = "TRUE" ]]; then
echo "Only echoed when \$SOME_VARIABLE stores string \"TRUE\"."
fi
Wenn ich aber das Leerzeichen um den Gleichheitsoperator entferne, wird immer der Exit-Status 0 ausgewertet (Zumindest gehe ich davon aus, dass er zurückgegeben werden muss, da er als wahr angenommen wird):
if [[ $SOME_VARIABLE="TRUE" ]]; then
echo "Always true."
fi
AKTUALISIEREN:
Nur um zu bestätigen, ob das Problem beim Gleichstellungsoperator liegt oder nicht:
#!usr/bin/ksh
SOME_VARIABLE=FALSE
if [[ $SOME_VARIABLE == "TRUE" ]]; then
echo "Only echoed when \$SOME_VARIABLE stores string \"TRUE\"."
fi
if [[ $SOME_VARIABLE=="TRUE" ]]; then
echo "Always true."
fi
[kent@TEST]$ sh test.sh
Always true.
AKTUALISIEREN:
Zusammenfassung:
Verwenden=
ist das gleiche wie==
oben, ist aber veraltet.Achten Sie immer auf Ihre Räume.