अपना शब्द लिया " प्रत्येक कमांड प्रत्येक पिछली कमांड पर निर्भर करता है। यदि कोई भी कमांड विफल हो जाती है तो पूरी स्क्रिप्ट विफल हो जानी चाहिए " सचमुच, मुझे लगता है कि आपको त्रुटियों के इलाज के लिए किसी विशेष फ़ंक्शन की आवश्यकता नहीं है।
आपको बस &&
ऑपरेटर और ||
ऑपरेटर के साथ अपने कमांड को चेन करना है , जो आपने लिखा था।
उदाहरण के लिए यह श्रृंखला टूट जाएगी और "कुछ गलत हो गया" को प्रिंट करेगा यदि पिछली कोई भी कमांड टूट गई (बैश बाएं से दाएं पढ़ता है)
cd foo && rm a && cd bar && rm b || echo "something went wrong"
वास्तविक उदाहरण (मैंने एक वास्तविक डेमो के लिए dir foo, a, dir बार और फ़ाइल b को बनाया):
gv@debian:/home/gv/Desktop/PythonTests$ cd foo && rm a && cd bar && rm bb || echo "something is wrong"
rm: cannot remove 'bb': No such file or directory
something is wrong #mind the error in the last command
gv@debian:/home/gv/Desktop/PythonTests$ cd foo && rm aa && cd bar && rm b || echo "something is wrong"
rm: cannot remove 'aa': No such file or directory
something is wrong #mind the error in second command in the row
और अंत में यदि सभी कमांड सफलतापूर्वक निष्पादित हो गए हैं (कोड 0 से बाहर निकलें), स्क्रिप्ट अभी चलती है:
gv@debian:/home/gv/Desktop/PythonTests$ cd foo && rm a && cd bar && rm b || echo "something is wrong"
gv@debian:/home/gv/Desktop/PythonTests/foo/bar$
# mind that the error message is not printed since all commands were successful.
यह याद रखना महत्वपूर्ण है कि && अगली कमांड के उपयोग के साथ निष्पादित किया जाता है यदि पिछली कमांड कोड 0 के साथ बाहर निकलती है जो बैश के लिए सफलता का मतलब है।
यदि कोई कमांड चेन में गलत आती है तो कमांड / स्क्रिप्ट / जो कुछ भी हो || निष्पादित किया जाएगा।
और सिर्फ रिकॉर्ड के लिए, यदि आपको ब्रेक की गई कमांड के आधार पर अलग-अलग कार्य करने की आवश्यकता है, तो आप इसे क्लासिक स्क्रिप्ट के साथ भी कर सकते हैं, $?
जिसके मान की मॉनिटरिंग पिछले कमांड के निकास कोड की रिपोर्ट करती है (यदि कमांड सफलतापूर्वक निष्पादित हो जाती है तो शून्य हो जाता है) या अन्य सकारात्मक संख्या अगर कमांड विफल हुआ)
उदाहरण:
for comm in {"cd foo","rm a","cd bbar","rm b"};do #mind the error in third command
eval $comm
if [[ $? -ne 0 ]];then
echo "something is wrong in command $comm"
break
else
echo "command $comm executed succesful"
fi
done
आउटपुट:
command cd foo executed succesfull
command rm a executed succesfull
bash: cd: bbar: No such file or directory
something is wrong in command cd bbar
युक्ति: आप "bash: cd: bbar: No no file ..." संदेश को लागू करके दबा सकते हैं eval $comm 2>/dev/null