प्रयत्न:
my_command || { echo 'my_command failed' ; exit 1; }
चार बदलाव:
- बदलें
&&करने के लिए||
- के
{ }स्थान पर उपयोग करें( )
- के
;बाद परिचय exitऔर
{पहले और बाद के रिक्त स्थान}
चूंकि आप संदेश को प्रिंट करना चाहते हैं और केवल तभी बाहर निकलते हैं जब कमांड विफल हो जाता है (गैर-शून्य मान के साथ बाहर निकलता है) आपको एक की आवश्यकता ||नहीं है &&।
cmd1 && cmd2
cmd2जब cmd1सफल होगा (निकास मान 0) चलेगा । जहाँ तक
cmd1 || cmd2
विफल cmd2होने पर चलेगा cmd1(निकास मान शून्य नहीं)।
उपयोग करने ( )से उनके अंदर का कमांड उप-शेल में चलता है और exitवहां से कॉल करने से आप सब-शेल से बाहर निकल सकते हैं और आपका मूल शेल नहीं, इसलिए निष्पादन आपके मूल शेल में जारी रहता है।
इस उपयोग को दूर करने के लिए { }
अंतिम दो परिवर्तनों को बैश द्वारा आवश्यक है।