2012-08-03 17 views
9

पर आउटपुट कैप्चरिंग आउटपुट मैं अपने बैश स्क्रिप्ट (एक चर में) में कैप्चर करना चाहता हूं जो कुछ कमांड के आउटपुट को टर्मिनल पर प्रिंट करता है। मैं निम्नलिखित की कोशिश की है:बैश स्क्रिप्ट टर्मिनल

TEST_OUT=`the_command ARG1` #Nope 

#Putting the line "the_command ARG1" into a separate script, testing2.sh, 

TEST_OUT=$(./testing2.sh) #Nope 

testing2.sh 
TEST_OUT=$? #Nope 

मैं कर रहा हूँ 100% ... लगता है कि जब मैं चलाने

> the_command ARG1 

... एक टर्मिनल में, यह टर्मिनल के लिए वास्तव में जानकारी मैं चाहता हूँ प्रिंट कब्जा।

किसी भी मदद के लिए धन्यवाद!

+1

मानक त्रुटि आउटपुट आपकी स्क्रिप्ट में कैप्चर नहीं प्रतीत होता है, इसलिए इसे टर्मिनल पर मुद्रित किया जाएगा। – C2H5OH

+1

यदि आउटपुट stderr पर भेजा जा रहा है, तो आपको इसे अपने var में कैप्चर करने से पहले इसे stdout पर रीडायरेक्ट करना होगा। 'TEST_OUT = $ (the_command ARG1 2> & 1) ' –

+0

आइए क्षमा करें, बैश और स्क्रिप्टिंग के लिए नया ... क्या टर्मिनल, स्टेडर और स्टडआउट पर प्रिंट करने के 2 तरीके हैं? – JDS

उत्तर

16

यदि आउटपुट stderr को भेजा जा रहा है, तो आपको इसे अपने var में कैप्चर करने से पहले इसे रीडाउट करने की आवश्यकता होगी। आज़माएं:

TEST_OUT=$(the_command ARG1 2>&1) 
+0

बहुत बढ़िया मुझे अंतर बी/डब्ल्यू stderr और stdout के बारे में पता नहीं था। अच्छी चीज़। – JDS

+1

यदि आप * केवल * stderr चाहते हैं, तो '$ (the_command ARG1 2> और 1>/dev/null)' का उपयोग करें। – chepner

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