इस स्निपेट पर विचार करें:
stop () {
echo "${1}" 1>&2
exit 1
}
func () {
if false; then
echo "foo"
else
stop "something went wrong"
fi
}
आम तौर पर जब func
इसे कहा जाता है तो यह स्क्रिप्ट को समाप्त करने का कारण होगा, जो कि इच्छित व्यवहार है। हालाँकि, यदि इसे एक सब-शेल में निष्पादित किया जाता है, जैसे कि
result=`func`
यह स्क्रिप्ट से बाहर नहीं निकलेगा। इसका मतलब है कि कॉलिंग कोड को हर बार फ़ंक्शन की निकास स्थिति की जांच करनी होगी। इससे बचने का कोई रास्ता है क्या? क्या यह किसलिए set -e
है?