2017-07-27 1 views
0

Ich habe ein einfaches Shell-Skript, das ich als ein periodischer Jenkins-Job anstelle eines Cronjob für Sichtbarkeit und Benutzerfreundlichkeit für weniger erfahrene Benutzer einrichten möchte. HierShell-Skript wird in Jenkins nicht fehlschlagen

ist das Skript:

#!/bin/bash 
outputfile=/opt/jhc/streaming/check_error_output.txt 

if [ "grep -sq 'Unable' $outputfile" == "0" ]; then 
    echo -e "ERROR MESSAGE FOUND\n" 
    exit 1 
else 
    echo -e "NO ERROR MESSAGES HAVE BEEN FOUND\n" 
    exit 0 
fi 

Mein Skript wird immer wieder zurückkehren „keine Fehlermeldungen gefunden werden“, unabhängig davon, ob oder nicht ‚unfähig‘ sind in $ output, was mache ich falsch?

Ich brauche auch meine Jenkins Job Klasse dies als Erfolg, wenn ‚Unfähig‘ nicht gefunden wird (zB Wenn Skript gibt „0“ dann passieren, alles andere gescheitert)

Antwort

0

Führen Sie den Befehl grep und Kontrolle der Exit-Status stattdessen:

#!/bin/bash 
outputfile=/opt/jhc/streaming/check_error_output.txt 
grep -sq 'Unable' $outputfile 
if [ "$?" == "0" ]; then 
    echo -e "ERROR MESSAGE FOUND\n" 
    exit 1 
else 
    echo -e "NO ERROR MESSAGES HAVE BEEN FOUND\n" 
    exit 0 
fi 
+0

Sie der Mann! Ich hätte selbst darüber nachdenken sollen, ich habe es zu lange angeguckt, mein Kopf ist weg – jto

0

Sie vergleichen zwei verschiedene Zeichenfolgen. Das Ergebnis wird immer falsch sein, d. H. Der else-Teil wird genommen.

Auch keine Notwendigkeit, den Statuscode explizit abzufragen. Tun Sie es so:

if grep -sq 'Unable' $outputfile 
then 
    .... 
else 
    .... 
fi 
+0

Das ist die Art und Weise, wie ich anfänglich anfing, außer dass ich meinen Grep-Befehl in '[]' hatte – jto

Verwandte Themen