Wie kann ich in einer Bash-Zeile einen Exit-Status von 0 zurückgeben, wenn die Ausgabe von /usr/local/bin/monit --version
nicht genau enthält, 5.5
und einen Exit-Status von 1, wenn dies der Fall ist?
75
! /usr/local/bin/monit --version | grep -q 5.5
( grep
Gibt den Exit-Status 0 zurück, wenn eine Übereinstimmung gefunden wird, und andernfalls 1. Die -q
Option "leise" weist an, keine gefundene Übereinstimmung zu drucken. Mit anderen Worten, grep
das einzige, was Sie möchten, ist die Rückgabe -Wert. Der !
am Anfang kehrt den Exit-Status der gesamten Pipeline um.)
Bearbeitet, um hinzuzufügen: Alternativ grep
können Sie schreiben , wenn Sie dies in "pure Bash" tun möchten (anstatt anzurufen ):
[[ $(/usr/local/bin/monit --version) != *5.5* ]]
( [[...]]
wird in §3.2.4.2 "Bedingte Konstrukte" des Bash-Referenzhandbuchs erläutert . *5.5*
ist genau wie in Fileglobs: null oder mehr Zeichen plus 5.5
plus plus null oder mehr Zeichen.)
/usr/local/bin/monit --version
Fehlschlags wiederzugeben?monit --version
Wert anzeigen , während er noch mit dem Status 1 beendet wird?monit --version; monit --version | grep -q 5.5
; aber ich vermute, du wolltest verwendengrep -q
anstatt nacktgrep
? In diesem Fall könnten Sie etwas vereinfachenmonit --version | grep -q 5.5 || (monit --version; false)
. Und -monit --version
druckt jemals mehrere Zeilen? Wenn nicht, können Sie auf einfach vereinfachen! monit --version | grep -v 5.5
.[ $(/usr/local/bin/monit --version) == "5.5" ]
zB-1: auf Erfolg prüfen
[ $(/usr/local/bin/monit --version) == "5.5" ] && echo "OK"
zB-2: auf Fehler prüfen
[ $(/usr/local/bin/monit --version) == "5.5" ] || echo "NOT OK"
oder, um nur zu überprüfen, ob die Ausgabe Folgendes enthält
5.5
:[[ $(/usr/local/bin/monit --version) =~ "5.5" ]] || echo "NOT OK"
quelle
[[ "5a5" =~ "5.5" ]] && echo yes
druckt nichts als[[ "5a5" =~ 5.5 ]] && echo yes
ja drucken. Die zitierte Version funktioniert in zsh, aber nicht in bash.Testen Sie den Rückgabewert von grep:
sudo service xyz status | grep 'not' &> /dev/null if [ $? == 0 ]; then echo "whateveryouwant" fi
Ich würde cron empfehlen, es funktioniert gut mit SALT Stack
quelle