Jawaban:
Setiap versi yang sesuai dengan POSIXgrep
memiliki sakelar -q
untuk senyap:
-q
Quiet. Nothing shall be written to the standard output, regardless
of matching lines. Exit with zero status if an input line is selected.
Dalam GNU grep (dan mungkin yang lain) Anda juga dapat menggunakan sinonim opsi panjang:
-q, --quiet, --silent suppress all normal output
String ada:
$ echo "here" | grep -q "here"
$ echo $?
0
String tidak ada:
$ echo "here" | grep -q "not here"
$ echo $?
1
Anda hanya perlu menggabungkan grep -q <pattern>
dengan pemeriksaan langsung kode keluar untuk proses terakhir untuk berhenti ( $?
).
Anda dapat menggunakan ini untuk membangun perintah seperti ini, misalnya:
uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac
Anda secara opsional dapat menekan output dari STDERR
seperti:
grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Ini akan dicetak error: 2
dari case
pernyataan (dengan asumsi kita tidak memiliki hak istimewa untuk membaca /etc/shadow
atau bahwa file tersebut tidak ada) tetapi pesan kesalahan dari grep
akan dialihkan ke /dev/null
sehingga kita tidak pernah melihatnya.
echo $?
jikagrep
mengembalikan kode keluar yang tidak nol.