Cómo comparar cadenas en ksh

Cómo comparar cadenas en ksh

Quiero verificar el resultado de un trabajo y ejecutar una acción en FAILED.

Primero: busco la última palabra de la línea en el archivo de registro de mi aplicación (para el archivo procesado recientemente ( $processedfilename)):

check1=$(grep "$processedfilename" "$logfile" | grep "anotherword" | \
    grep "FAILED" | tail -1 | awk '{print $NF}')

Esto resulta en [FAILED].

Ahora quiero comprobar el resultado.

if [ $check1 -eq "[[FAILED]" ] 
then

o

if [ $check1 -eq "\[FAILED]" ] 
then

Siempre hayerror de sintaxis aritmética.

¿Cuál es la sintaxis correcta para verificar [FAILED]?

Respuesta1

Siempre debes comillas dobles las variables. Y necesitas =cadenas iguales. Entonces:

if [ "$check1" = "[FAILED]" ]; then

Respuesta2

Estás haciendo una comparación aritmética usando -eqlo que lleva al error, necesitas hacer una comparación de cadenas usando =(o ==dentro [[), y para eso usar comillas es suficiente:

[ "$check1" = "[[FAILED]" ]
[[ "$check1" = "[[FAILED]" ]]

información relacionada