Como comparar strings no ksh

1

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

Primeiro: Faço a última palavra da linha no arquivo de log do aplicativo (para o arquivo processado recente ( $processedfilename )):

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

Isso resulta em [FAILED] .

Agora quero verificar o resultado

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

ou

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

Existe sempre erro de sintaxe aritmética .

Qual é a sintaxe correta para verificar [FAILED] ?

    
por Vince 25.10.2016 / 16:49

2 respostas

2

Você deve sempre aspas duplas. E você precisa de = para string igual. Então:

if [ "$check1" = "[FAILED]" ]; then
    
por 25.10.2016 / 16:54
2

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

[ "$check1" = "[[FAILED]" ]
[[ "$check1" = "[[FAILED]" ]]
    
por 25.10.2016 / 16:52