2012-04-25 14 views
13

मैं एक चर करने के लिए आदेश उत्पादन रीडायरेक्ट करने के लिए कोशिश कर रहा हूँ में विफल रहता हैरीडायरेक्ट कर रहा है आदेश उत्पादन

echo $OUTPUT 

जब यह चल रहा है उत्पादन कर रहा है निम्नलिखित:

19:19:12 [email protected] ~ OUTPUT=$(sudo apache2ctl configtest) 
Syntax OK 
Syntax OK 

लेकिन चर रिक्त रहता है। मैंने अन्य आदेशों के लिए भी कोशिश की है और सब कुछ ठीक काम करता है।

OUTPUT=$(ls -l) 

यह चर OUTPUT करने के लिए फ़ाइल सूची लिखते हैं इतना है कि यह बाद में पढ़ा जा सकता है। इसे काम करने के लिए मुझे क्या करना चाहिए?

+0

सामान्य कारण है उत्पादन के बीच एक जगह होने से और = क्या यह आपके मामले में सच नहीं है? – ControlAltDel

उत्तर

27

शायद आउटपुट stderr पर जाता है, stdout नहीं?

इस प्रयास करें: OUTPUT=$(sudo apache2ctl configtest 2>&1)

+0

व्यक्तिगत रूप से मुझे जवाब थोड़ा और स्पष्टीकरण मिलता है http://stackoverflow.com/a/3130425/1504300 – reallynice

0

nginx संभव स्थिति के लिए जब configtest config फाइल में त्रुटि के साथ सफल हो सकता है। उदाहरण:

nginx: [warn] conflicting server name "test.com" on 0.0.0.0:80, ignored 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 
nginx: configuration file /etc/nginx/nginx.conf test is successful 
सही जांच त्रुटियों के लिए

बैश स्क्रिप्ट में उपयोग की जरूरत है:

if [[ $((sudo /sbin/service nginx configtest) 2>&1 | grep "failed\|warn") ]]; then 
    echo "ERROR!!!" 
else 
    echo "OK!!!" 
fi 
संबंधित मुद्दे