![Como comparar strings em ksh](https://rvso.com/image/97233/Como%20comparar%20strings%20em%20ksh.png)
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 -eq
levando ao erro, você precisa fazer uma comparação de strings usando =
(ou ==
inside [[
), e para isso usar aspas é suficiente:
[ "$check1" = "[[FAILED]" ]
[[ "$check1" = "[[FAILED]" ]]