Problema com o comando echo

1

Eu quero ler um arquivo e depois se houver um "KO" no arquivo eu vou quebrar o programa e imprimir "KO". Se houver todos os "OK" eu quero que no final do programa ele irá me exibir "OK". Aqui o código:

#!/bin/bash
filename="res.txt"
righe=$(wc -l $filename | awk '{print $1}' )
riga=0
while [ $riga -lt $righe ]; do
let riga+=1
current=$(head -$riga $filename | tail -1)
if [ $current  == 'KO' ]; then
stampa="KO"
break
else
stampa="OK"
fi
done
echo $stampa

O problema é que ao combinar todos os "OK" o programa me mostra isso:

./provaScript2.sh: line 12: [: too many arguments
./provaScript2.sh: line 12: [: ==: unary operator expected
OK

IOW Eu tenho um arquivo como este:

OK
OK
OK
OK
KO
OK
OK
OK
OK
OK

Eu quero imprimir OK se ele contiver todos os "OK" e não "KO". Quero imprimir KO se contiver pelo menos 1 "KO"

    
por lollopeco 22.07.2016 / 12:28

1 resposta

1

Experimente este,

#!/bin/bash

if grep -Fq "KO" res.txt
then
        echo "KO found, exiting.."
        exit
else
        echo "OK"
fi
    
por 22.07.2016 / 12:53