Estoy usando shell SH y estoy tratando de comparar una cadena con el valor de una variable, pero la condición if
siempre se ejecuta en verdadero. ¿Por qué?Comparar una cadena en Unix
Aquí hay un código:
Sourcesystem="ABC"
if [ "$Sourcesystem" -eq 'XYZ' ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
Incluso esto no está funcionando:
Sourcesystem="ABC"
if [ 'XYZ' -eq "$Sourcesystem" ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
En segundo lugar, podemos coincidir esto con un valor NULL o una cadena vacía?
Primero en Bourne shell que no necesita el extra ';' Cuando pruebo ejecutar el script en el shell Bourne, la condición if es falsa. En primer lugar dará una advertencia: [: ABC: expresión entera esperada. El resultado es: "El sistema de origen NO coincide con ABC". Como comentaron otros, -eq se usa para comparaciones enteras. Use un signo igual para la comparación de cadenas en shell Bourne (#!/Bin/sh). Tu caparazón debería haberte corregido en primer lugar. –