Você deve sempre aspas duplas. E você precisa de =
para string igual. Então:
if [ "$check1" = "[FAILED]" ]; then
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]
?
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]" ]]