चूंकि निर्गम स्थिति ज्ञात होने से पहले उत्पन्न होती है, इसलिए आपको इसे कहीं स्टोर करना होगा।
एक संभावना यह है कि इसे शेल चर में संग्रहीत किया जाए:
output=$(php /path/to/script.php)
if [ $? -ne 0 ]; then
printf "%s\n" "$output"
fi
यह स्क्रिप्ट के आउटपुट को पूरी तरह से संरक्षित नहीं करता है (यह रिक्त लाइनों को पीछे हटाता है), लेकिन यह इस उपयोग के मामले के लिए ठीक है। यदि आप रिक्त लाइनों को पीछे छोड़ना चाहते हैं:
output=$(php /path/to/script.php; ret=$?; echo a; exit $ret)
if [ $? -ne 0 ]; then
printf "%s" "${output%a}"
fi
यदि संभावित रूप से बहुत अधिक उत्पादन होता है, तो आप इसके बजाय एक अस्थायी फ़ाइल में संग्रहीत करना पसंद कर सकते हैं:
output_file=$(mktemp /var/tmp/script.XXXXXXXXXX.out)
php /path/to/script.php >>"$output_file"
ret=$?
if [ $ret -ne 0 ]; then
echo "script.php failed (status $ret), see the output in $output_file"
fi