2017-03-03 27 views
5

में stderr रीडायरेक्ट करने के लिए मैं अपने Jenkinsfile में यह है:जेनकींस पाइपलाइन

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

लेकिन यह वास्तव में इस तरह से चलाता है:

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

पुनर्निर्देशन हिस्सा चला गया है।

क्या मेरे आदेश में कुछ गड़बड़ है?

+0

'' 'संकेत संकेत 'bash -x' से डीबगिंग आउटपुट इंगित करते हैं, इसलिए यह संभव है कि यह मूल्यांकन के तरीके के आधार पर पूर्ण रेखा के बजाय कमांड के टुकड़े दिखा रहा है (' बिल्ली जैसे पाइप भी आज़माएं .. । tee somefile.log' को जांचने के लिए) – giorgiosironi

+0

मुझे '2>/dev/null' चाहिए क्योंकि कभी-कभी '/ opt/jenkins/workspace/जेनकिन्सफाइलटेस्ट/testfile' मौजूद नहीं है। यह स्वीकार्य है। लेकिन जब मैं फ़ाइल मौजूद नहीं हूं, तो मैं इसे 'ऐसी कोई फ़ाइल या निर्देशिका' आउटपुट नहीं करना चाहता हूं। क्या इसको हासिल करने के लिए कोई रास्ता है? – Ardar

+1

'test -e जेनकिन्सफाइलटेस्ट/testfile && any_command' फ़ाइल मौजूद है अगर कोई भी'command' 'निष्पादित करेगा – giorgiosironi

उत्तर

0

त्रुटि आउटपुट को दबाने के बजाय, आपको इससे पहले त्रुटि से बचना चाहिए। तो परीक्षण करें कि फ़ाइल इसे आउटपुट करने से पहले मौजूद है:

sh 'test -f testfile && cat testfile' 

नौकरी करना चाहिए।

संबंधित मुद्दे