আমার একটি বাশ স্ক্রিপ্ট রয়েছে যা ব্যবহার করে set -o errexitযাতে ত্রুটিযুক্ত হয়ে পুরো স্ক্রিপ্টটি ব্যর্থতার পয়েন্টে উপস্থিত হয়।
স্ক্রিপ্টটি একটি curlকমান্ড চালায় যা কখনও কখনও উদ্দিষ্ট ফাইলটি পুনরুদ্ধার করতে ব্যর্থ হয় - তবে যখন এটি ঘটে তখন স্ক্রিপ্টটি প্রস্থান করতে ত্রুটি করে না।
আমি একটি forলুপ যুক্ত করেছি
- কয়েক সেকেন্ডের জন্য বিরতি দিন তারপর
curlকমান্ডটি আবার চেষ্টা করুন falseডিফল্ট অ-শূন্য প্রস্থান স্থিতি সংজ্ঞায়িত করতে লুপের নীচে ব্যবহার করুন - কার্ল কমান্ড সফল হলে - লুপটি বিরতি এবং শেষ কমান্ডের প্রস্থান স্থিতি শূন্য হওয়া উচিত।
#! /bin/bash
set -o errexit
# ...
for (( i=1; i<5; i++ ))
do
echo "attempt number: "$i
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
if [ -f ~/.vim/autoload/pathogen.vim ]
then
echo "file has been retrieved by curl, so breaking now..."
break;
fi
echo "curl'ed file doesn't yet exist, so now will wait 5 seconds and retry"
sleep 5
# exit with non-zero status so main script will errexit
false
done
# rest of script .....
সমস্যাটি যখন curlকমান্ড ব্যর্থ হয়, লুপটি পাঁচবার কমান্ডটি পুনরায় চেষ্টা করে - যদি সমস্ত প্রচেষ্টা ব্যর্থ হয় তবে লুপ শেষ হওয়ার জন্য এবং মূল স্ক্রিপ্টটি পুনরায় শুরু হয় - পরিবর্তে ট্রিগার না করে errexit।
এই curlবিবৃতি ব্যর্থ হলে আমি কীভাবে পুরো স্ক্রিপ্টটি প্রস্থান করতে পারি?
trueযে ব্রেক স্টেটমেন্টটি স্পষ্ট করে দেওয়া এবং লুপটির প্রস্থান মূল্য নিশ্চিত করা আগে রাখা ভাল ধারণা হবে?