Como comparar strings em ksh

Como comparar strings em ksh

Quero verificar o resultado de um trabalho e executar uma ação em FAILED.

Primeiro: eu coloco a última palavra da linha no arquivo de log do meu aplicativo (para o arquivo processado recentemente ( $processedfilename)):

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

Isto resulta em [FAILED].

Agora quero verificar o resultado

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

ou

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

Sempre háerro de sintaxe aritmética.

Qual é a sintaxe correta para verificar [FAILED]?

Responder1

Você deve sempre colocar aspas duplas nas variáveis. E você precisa =de strings iguais. Então:

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

Responder2

Você está fazendo uma comparação aritmética usando -eqlevando ao erro, você precisa fazer uma comparação de strings usando =(ou ==inside [[), e para isso usar aspas é suficiente:

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

informação relacionada