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如果它包含至少 1 个“KO”,我想要打印

答案1

试试这个,

#!/bin/bash

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

相关内容