2017-03-03 36 views
5

Tôi có điều này trong Jenkinsfile tôi:Làm thế nào để chuyển hướng stderr trong Jenkins đường ống

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

nhưng nó thực sự chạy như thế này:

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

phần chuyển hướng đã biến mất.

Có điều gì sai với lệnh của tôi không?

+0

Dấu hiệu '+' cho biết đầu ra gỡ lỗi từ 'bash -x', vì vậy có thể nó hiển thị các phần của lệnh thay vì dòng đầy đủ tùy thuộc vào cách nó được đánh giá (thử các đường ống như' cat .. . tee somefile.log' để kiểm tra) – giorgiosironi

+0

Tôi muốn '2>/dev/null' vì đôi khi'/opt/jenkins/workspace/JenkinsfileTest/testfile' không tồn tại. Điều này là chấp nhận được. Nhưng tôi không muốn nó xuất ra 'Không có tập tin hoặc thư mục' như vậy khi tập tin không tồn tại. Có cách nào để đạt được điều này? – Ardar

+1

'test -e JenkinsfileTest/testfile && any_command' sẽ chỉ thực thi' any_command' nếu tệp tồn tại – giorgiosironi

Trả lời

0

Thay vì triệt tiêu đầu ra lỗi, bạn nên tránh lỗi trước khi nó xảy ra. Vì vậy, hãy kiểm tra xem tệp có tồn tại hay không trước khi xuất ra:

sh 'test -f testfile && cat testfile' 

nên thực hiện công việc.

Các vấn đề liên quan