Самые популярные ответы не пройдут, если grep не вернул никаких результатов.
Homer Simpson
Marge Simpson
Bart Simpson
Lisa Simpson
Ned Flanders
Rod Flanders
Todd Flanders
Moe Szyslak
Это неправильный способ сделать это :
wiggums=$(grep -iF "Wiggum" characters.txt);
num_wiggums=$(echo "$wiggums" | wc -l);
echo "There are ${num_wiggums} here!";
Там нам скажут, что в списке есть 1 Виггам , даже если его нет.
Вместо этого вам нужно сделать еще одну дополнительную проверку, чтобы убедиться, что переменная пуста (например -z, «равна нулю»). Если grep ничего не вернул, переменная будет пустой.
matches=$(grep -iF "VanHouten" characters.txt);
if [ -z "$matches" ]; then
num_matches=0;
else
num_matches=$(echo "$matches" | wc -l);
fi
echo "There are ${num_matches} VanHoutens on the list";