echo コマンドの問題

echo コマンドの問題

ファイルを読みたいのにファイルに「KO」がある場合は、プログラムを中止して「KO」を印刷します。みんな「OK」なら、プログラムの終わりに「OK」と言いたいです。コードは次のとおりです。

#!/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

問題は、すべて「OK」を一致させると、プログラムが次のように表示されることです。

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

IOW 次のファイルがあります。

OK
OK
OK
OK
KO
OK
OK
OK
OK
OK

OK「OK」がすべて含まれていて「KO」が含まれていない場合は、印刷したいと思います。KO「KO」が1つ以上含まれていれば印刷したいと思います。

答え1

この試み、

#!/bin/bash

if grep -Fq "KO" res.txt
then
        echo "KO found, exiting.."
        exit
else
        echo "OK"
fi

関連情報