Jawaban:
Setiap versi yang sesuai dengan POSIXgrep memiliki sakelar -quntuk 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 STDERRseperti:
grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Ini akan dicetak error: 2dari casepernyataan (dengan asumsi kita tidak memiliki hak istimewa untuk membaca /etc/shadowatau bahwa file tersebut tidak ada) tetapi pesan kesalahan dari grepakan dialihkan ke /dev/nullsehingga kita tidak pernah melihatnya.
echo $?jikagrepmengembalikan kode keluar yang tidak nol.