Por que a seguinte condição IF em ksh sempre é avaliada como verdadeira?
Considere, o código abaixo funciona conforme o esperado:
if [[ $SOME_VARIABLE = "TRUE" ]]; then
echo "Only echoed when \$SOME_VARIABLE stores string \"TRUE\"."
fi
Mas quando eu removo o espaço em torno do operador de igualdade, ele sempre é avaliado como 0 status de saída (pelo menos é o que eu suponho que ele deve estar retornando, pois é considerado verdadeiro):
if [[ $SOME_VARIABLE="TRUE" ]]; then
echo "Always true."
fi
ATUALIZAR:
Apenas para confirmar se o problema está no operador de igualdade ou não:
#!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.
ATUALIZAR:
Resumo:
Usando=
é o mesmo que==
acima, mas é obsoleto.SEMPRE cuide dos seus espaços.