Die am besten bewerteten Antworten schlagen fehl, wenn keine Ergebnisse von einem Grep zurückgegeben wurden.
Homer Simpson
Marge Simpson
Bart Simpson
Lisa Simpson
Ned Flanders
Rod Flanders
Todd Flanders
Moe Szyslak
Dies ist der falsche Weg :
wiggums=$(grep -iF "Wiggum" characters.txt);
num_wiggums=$(echo "$wiggums" | wc -l);
echo "There are ${num_wiggums} here!";
Es wird uns sagen, dass 1 Wiggum in der Liste ist, auch wenn es keine gibt.
Stattdessen müssen Sie eine zusätzliche Überprüfung durchführen, um festzustellen, ob die Variable leer ist ( -zwie in "ist Null"). Wenn grep nichts zurückgegeben hat, ist die Variable leer.
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";