আপনার শব্দটি নেওয়া " প্রতিটি কমান্ড প্রতিটি পূর্ববর্তী কমান্ডের উপর নির্ভর করে any কোনও কমান্ড যদি পুরো স্ক্রিপ্টে ব্যর্থ হয় তবে " আক্ষরিক অর্থে, আমি মনে করি ত্রুটিগুলি নিরাময়ের জন্য আপনার কোনও বিশেষ ফাংশনের প্রয়োজন নেই।
আপনার যা দরকার তা হ'ল &&
অপারেটর এবং ||
অপারেটরের সাথে আপনার কমান্ডগুলি শৃঙ্খলাবদ্ধ করা , যা আপনি লিখেছেন ঠিক তা করে।
উদাহরণস্বরূপ, এই শৃঙ্খলাটি ভেঙে " পূর্ববর্তী কোনও কমান্ড ভঙ্গ হলে" কিছু ভুল হয়েছে "মুদ্রণ করবে (বাশ বাম থেকে ডানে পড়বে )
cd foo && rm a && cd bar && rm b || echo "something went wrong"
প্রকৃত উদাহরণ (আমি একটি সত্যিকারের ডেমোর জন্য দির ফু, ফাইল এ, ডায়ার বার এবং ফাইল বি তৈরি করেছি):
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
পরামর্শ: আপনি প্রয়োগ করে "বাশ: সিডি: বার: এই জাতীয় কোনও ফাইল ..." দমন করতে পারেন eval $comm 2>/dev/null