2012-09-11 15 views

cevap

80
! /usr/local/bin/monit --version | grep -q 5.5 

(grep 0 çıkış-durumu döndürür -q seçenek, "sessiz", bulduğu maçı yazdırmak gerektiğini bildiren;., diğer bir deyişle, söyler . istediğiniz tek şey onun dönüş değeri olduğunu grep başında ! bütün boru hattının çıkış-durumunu tersine çevirir)

Düzenlendi eklemek için:. Alternatif olarak, saf" bunu istiyorum Bash "(grep'u aramak yerine) yazabilirsiniz:

[[ $(/usr/local/bin/monit --version) != *5.5* ]] 

([[...]]§3.2.4.2 "Conditional Constructs" of the Bash Reference Manual içinde açıklanmıştır. *5.5* sadece fileglobs içinde gibidir. Sıfır veya daha fazla karakterden artı 5.5 artı sıfır veya daha fazla karakter)

+0

benim pastırma Kaydedilen TUZ yığını ile çalışıyor! – mhenrixon

+0

Effing genius! Borunun gücü sürekli etkileyicidir. –

+0

Aynı zamanda başarısız olduğunda '/ usr/local/bin/monit --version' değerinin yankısı var mı? –

20
[ $(/usr/local/bin/monit --version) == "5.5" ] 

örn-1: Başarı için kontrol

[ $(/usr/local/bin/monit --version) == "5.5" ] && echo "OK" 

örn-2: başarısızlığın kontrol

[ $(/usr/local/bin/monit --version) == "5.5" ] || echo "NOT OK" 

veya çıkış içeriyorsa sadece kontrol etmek 5.5:

[[ $(/usr/local/bin/monit --version) =~ "5.5" ]] || echo "NOT OK" 
+0

"5.5" daha büyük miktarda çıktının bir parçası olacaktır. –

+0

cevabı güncelleştirdi – perreal

+0

@perreal - Bash içinde regex koyamazsınız, onu bir regex yerine bir harfe dönüştürür. (alıntı bash bazı eski sürümlerinde çalışır, ancak bir hata olarak giderildi). – jordanm

0

Testi grep dönüş değeri:

sudo service xyz status | grep 'not' &> /dev/null 
if [ $? == 0 ]; then 
    echo "whateveryouwant" 
fi 

ben cron'u tavsiye ederim,

İlgili konular