![Cómo comparar cadenas en ksh](https://rvso.com/image/97233/C%C3%B3mo%20comparar%20cadenas%20en%20ksh.png)
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 -eq
lo 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]" ]]