Menurut man grep
halaman, -c
bendera adalah untuk
-c, --countMenekan keluaran normal; alih-alih cetak hitungan baris yang cocok untuk setiap file input.
Jadi yang Anda lihat adalah hitungan kecocokan dan jangan bingung dengan kode keluar dari grep
cocok. Kode 1
adalah karena tidak ada baris yang cocok dari input.
Lihat kasus lainnya,
echo 'No' | grep -c No
1
echo $?
0
Juga untuk membaca EXIT CODES
pada man grep
halaman,
STATUS KELUARBiasanya status keluar adalah 0 jika satu baris dipilih, 1 jika tidak ada baris yang dipilih, dan 2 jika terjadi kesalahan.
Kode keluarnya adalah 1 karena tidak ada yang cocok dengan grep.
STATUS KELUARStatus keluar adalah 0 jika baris yang dipilih ditemukan, dan 1 jika tidak ditemukan. Jika terjadi kesalahan, status keluar adalah 2. (Catatan:kode penanganan kesalahan POSIX harus memeriksa '2' atau lebih besar.)
Outputnya nol karena hitungan 'Total' adalah nol. Ini karena opsi -c:
-c, --countMenekan output normal; alih-alih cetak hitungan garis yang cocok untuk setiap file input. Dengan opsi -v, --invert-match (lihat di bawah), hitung baris yang tidak cocok. (-c ditentukan oleh POSIX.)
Jika Anda ingin memaksakan kode keluar 0, Anda cukup menambahkan || true
ke perintah Anda:
echo 'Total' | grep -c No || true