Yanıtlar:
POSIX uyumlugrep
herhangi bir sürümü-q
sessiz anahtarına sahiptir :
-q
Quiet. Nothing shall be written to the standard output, regardless
of matching lines. Exit with zero status if an input line is selected.
GNU grep'te (ve muhtemelen diğerlerinde), uzun-seçenek eş anlamlılarını da kullanabilirsiniz:
-q, --quiet, --silent suppress all normal output
Dize var:
$ echo "here" | grep -q "here"
$ echo $?
0
Dize mevcut değil:
$ echo "here" | grep -q "not here"
$ echo $?
1
Çıkmanız gereken grep -q <pattern>
son işlem için çıkış kodunu hemen kontrol etmeniz yeterlidir ( $?
).
Bu gibi bir komut oluşturmak için bunu kullanabilirsiniz, örneğin:
uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac
İsteğe bağlı olarak çıktıyı şu şekilde bastırabilirsiniz STDERR
:
grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Bu error: 2
, case
açıklamadan yazdırır (okuma ayrıcalıklarına sahip olmadığımızı /etc/shadow
veya dosyanın mevcut olmadığını varsayarsak ), ancak gelen hata mesajı hiçbir grep
zaman görmememiz için yönlendirilir /dev/null
.
echo $?
verirse bu başarısız olurgrep
.