क्या मल्टीपल कमांड्स के लिए पाइपलाइफ के समान कुछ है, जैसे 'ट्राय' स्टेटमेंट लेकिन बैश के भीतर। मैं ऐसा कुछ करना चाहूंगा:
echo "trying stuff"
try {
command1
command2
command3
}
और किसी भी बिंदु पर, यदि कोई कमांड विफल रहता है, तो ड्रॉप आउट करें और उस कमांड की त्रुटि को प्रतिध्वनित करें। मैं ऐसा कुछ नहीं करना चाहता:
command1
if [ $? -ne 0 ]; then
echo "command1 borked it"
fi
command2
if [ $? -ne 0 ]; then
echo "command2 borked it"
fi
और इसी तरह ... या कुछ भी:
pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3
क्योंकि प्रत्येक आज्ञा के तर्क मैं मानता हूं (यदि मैं गलत हूं तो मुझे सुधारो) एक दूसरे के साथ हस्तक्षेप करेंगे। ये दो विधियाँ मुझे बहुत लंबी-चौड़ी और गंदी लगती हैं इसलिए मैं यहाँ अधिक कुशल विधि की अपील कर रहा हूँ।
set -e
एक भयानक विचार है। BashFAQ # 105 में कुछ अनपेक्षित किनारे के मामलों की चर्चा करते हुए देखें, जो इसे पेश करते हैं, और / या विभिन्न गोले '(और शेल संस्करणों') के बीच असंगतता दिखाने वाले तुलनाओं में- inulm.de/~masheck/various/set पर लागू होते हैं। -e ।
set -euo pipefail
।