Podle man grep
stránka, -c
příznak je pro
-c, --countPotlačit normální výstup; místo toho vytiskněte počet odpovídajících řádků pro každý vstupní soubor.
Takže to, co vidíte, je počet shod a nezaměňujte s výstupním kódem grep
zápas. Kód 1
je způsobeno tím, že ze vstupu neodpovídají žádné řádky.
Podívejte se na druhý případ,
echo 'No' | grep -c No
1
echo $?
0
Také ke čtení na EXIT CODES
na man grep
stránka,
EXIT STATUS Normálně je výstupní stav 0, pokud je vybrána linka, 1, pokud nebyly vybrány žádné linky, a 2, pokud došlo k chybě.
Výstupní kód je 1, protože grep nic neodpovídalo.
EXIT STATUSStav ukončení je 0, pokud byly nalezeny vybrané řádky, a 1, pokud nebyly nalezeny. Pokud došlo k chybě, stav ukončení je 2. (Poznámka:Kód pro zpracování chyb POSIX by měl zkontrolovat, zda je '2' nebo vyšší.)
Výstup je nula, protože počet 'Celkem' je nula. To kvůli volbě -c:
-c, --countPotlačit normální výstup; místo toho vytiskněte počet odpovídajících řádků pro každý vstupní soubor. S volbou -v, --invert-match (viz níže) počítejte neodpovídající řádky. (-c je určeno POSIXem.)
Pokud byste chtěli vynutit návratový kód 0, stačí přidat || true
na váš příkaz:
echo 'Total' | grep -c No || true