Soru grep sonucuna göre eko


Grep'in herhangi bir sonuç bulup bulmadığını 'evet' veya 'hayır' gösteren bir linere ihtiyacım var.

Ben oynadım grep -cama başarı olmadan.


7
2018-06-20 20:12


Menşei




Cevaplar:


Nasıl hakkında:

uptime | grep user && echo 'yes' || echo 'no'
uptime | grep foo && echo 'yes' || echo 'no'

O zaman sessiz olursun:

uptime | grep --quiet user && echo 'yes' || echo 'no'
uptime | grep --quiet foo && echo 'yes' || echo 'no'

Grep kılavuz sayfasından:

ÇIKIŞ DURUMU

Normalde, seçilen satırlar bulunursa çıkış durumu 0'dır ve 1   aksi takdirde. Ama çıkış durumu          2, bir hata oluştuğunda, -q veya --quiet veya --silent değilse   seçenek kullanılır ve seçili bir çizgi          buldum.


11
2018-06-20 20:16





"Tek bir liner" ile ne demek istediğinden emin değilim, benim için bu bir "tek liner"

Sadece ekle ; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi grep komutundan sonra

bash$ grep ABCDEF /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
No
bash$ grep nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
nameserver 212.27.54.252
Yes

Grep sonucunu bastırmak istiyorsanız grep'e grep ekleyin

bash$ grep -q nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
Yes

2
2018-06-20 20:21





Bu sürüm arasında ara Weboide en sürüm ve yarıçapı en versiyon:

if grep --quiet foo bar; then echo "yes"; else echo "no"; fi

Eskiden daha okunabilir ve gereksiz yere kullanılmıyor $? İkincisi gibi.


2
2018-06-20 22:48