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]" ]]