2017-03-03 4 views
5

Ich habe dies in meinem Jenkinsfile:Wie umleiten stderr in Jenkins Pipeline

sh 'cat /opt/jenkins/workspace/JenkinsfileTest/testfile 2>/dev/null 

aber es läuft eigentlich wie folgt aus:

[JenkinsfileTest] Running shell script 
+ cat /opt/jenkins/workspace/JenkinsfileTest/testfile 

die Umleitung Teil verschwunden ist.

Ist irgendetwas mit meinem Befehl falsch?

+0

Was '+' Zeichen anzeigen, ist die Debugging-Ausgabe von 'bash -x', also ist es möglich, Teile des Befehls statt der vollen Zeile anzuzeigen, je nachdem, wie es ausgewertet wird (versuchen Sie auch Rohre wie' Katze .. . | tee sophile.log' zu überprüfen) – giorgiosironi

+0

Ich möchte '2>/dev/null' weil manchmal'/opt/jenkins/workspace/JenkinsfileTest/testfile' nicht existiert. Dies ist akzeptabel. Aber ich will nicht, dass es keine solche Datei oder kein Verzeichnis ausgibt, wenn die Datei nicht existiert. Gibt es einen Weg, dies zu erreichen? – Ardar

+1

'test -e JenkinsfileTest/testfile && any_command' führt nur' any_command' aus, wenn die Datei existiert – giorgiosironi

Antwort

0

Anstatt die Fehlerausgabe zu unterdrücken, sollten Sie den Fehler vermeiden, bevor er auftritt. Prüfen Sie also, ob die Datei vor der Ausgabe existiert:

sollte die Aufgabe erledigen.