ファイルを読みたいのにファイルに「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