cat
является избыточным и является причиной вашей проблемы, потому что "|" труба создает подоболочку. Вот почему, когда вы выходите из цикла while, значение $b
теряется. просто перенаправьте файл в цикл чтения
#!/bin/bash
while read -r line
do
count1=$(echo "$line"|wc -c)
a=37
if [ "$count1" -eq "$a" ];then
b=0
else
c=1
break
fi
done < "PLAYARTE_TXT.txt"
if [[ "$b" = 0 && "$c" != 1 ]];then
echo success
else
echo failure
fi
exit 0