इस तरह से मैं अपनी स्क्रिप्ट्स (आमतौर पर क्रोनोजर) में स्टडआउट और स्टादर दोनों को लॉग करता हूं:
#!/bin/bash
mylog() {
echo "[`date '+%Y-%m-%d %H:%M:%S'`] $1"
}
(
mylog 'start'
some-command || mylog 'error' && exit 1
mylog 'end'
) >> /var/log/my-log.log 2>&1
कुछ स्क्रिप्ट में मैं बाहर निकलने के बजाय रिटर्न का उपयोग करता हूं और ठीक काम करता हूं, लेकिन अब यह कहता है कि मैं रिटर्न का उपयोग नहीं कर सकता जब तक कि मैं स्क्रिप्ट को src के साथ शामिल नहीं करता या किसी फ़ंक्शन में उपयोग नहीं करता। इसलिए मैंने इसे बाहर निकलने के लिए बदल दिया, लेकिन समस्या यह है कि यह कुछ भी लॉग नहीं करता है, ऐसा लगता है कि यह >> आउटपुट पुनर्निर्देशन को रोकता है। एक और समस्या यह है कि मैं इसे src के साथ बाद में शामिल नहीं कर पाऊंगा, क्योंकि मैं केवल इस स्क्रिप्ट को रोकना चाहता हूं, सब कुछ नहीं।
मैं आउटपुट पुनर्निर्देशन का उपयोग करता हूं क्योंकि मैं सब कुछ लॉग करना चाहता हूं, भले ही कोई त्रुटि न हुई हो। और कभी-कभी आदेश भी उचित निकास कोड वापस नहीं करते हैं, इसलिए मैं उस पर भरोसा नहीं कर सकता।
तो मैं त्रुटि पर 'वापसी' कैसे कर सकता हूं? मुझे 'सेट-ई' के बारे में पता है, लेकिन मैं स्क्रिप्ट को रोकने के लिए अधिक नियंत्रण रखना पसंद करता हूं।
कोई विचार?