मैं क्या जब मैं एक आदेश है निष्पादित और केवल विफलता के मामले में लॉग प्राप्त करने के लिए इच्छा के लिए इस प्रकार (एक खोल comamnd लगाया जाता है की तरह है /bin/sh -c '...'
मामले में सर्जक एक का उपयोग नहीं करता system
कॉल या खोल के बिना सीधे आदेश पर अमल) :
command 2&>1 > command-log.txt || cat command-log.txt
यह किसी फ़ाइल में त्रुटि और मानक आउटपुट को रीडायरेक्ट करेगा और केवल विफलता की स्थिति में फ़ाइल की सामग्री को प्रदर्शित करेगा। यदि कमांड बहुत क्रियात्मक है और आप लॉग को रखना नहीं चाहते हैं तो ठीक है जब आप साथ जा सकते हैं:
command 2&>1 > command-log.txt && rm command-log.txt || cat command-log.txt
के लिए बोली &&
और ||
से उपयोग श मैनपेज :
प्रतीक && (||) के कारण सूची का क्रियान्वयन केवल तभी होता है जब पूर्ववर्ती पाइपलाइन एक शून्य (गैर शून्य) मान लौटाती है।
शायद यह सबसे आसान तरीका नहीं है, लेकिन इसे किसी भी विन्यास प्रबंधन प्रणाली के साथ बहुत पोर्टेबल होने का फायदा मिलता है, जो कमांड स्टडआउट प्रदर्शित करने की क्षमता देता है।