বাংলায় শেল স্ক্রিপ্টিং- পর্ব ৭ [লুপ স্টেটমেন্ট (for লুপ, while লুপ)]

আমরা গত পর্বগুলোতে অনেক ধরনের কাজ শিখেছি যেগুলো হয়তো আমরা  আমাদের দৈনন্দিন কাজে ব্যবহার করতে পারবো। সেই কাজগুলোকে আমরা মনেকরি একটা দিনের কাজ, অথবা আপনার প্রত্যহিক কাজকর্ম যেমন- ঘুম থেকে ওঠা, দাত ব্রাশ করা, খাওয়া, রেস্ট নেয়া, আবার ঘুমানো, ঘুড়তে যাওয়া ইত্যাদি ইত্যাদি।

একদিনের এই কাজগুলো হয়তো আমরা প্রোগ্রামিং ল্যাংগুয়েজে রিপ্রেজেন্ট করতে পারবো, বাট এই ধরনের কাজ যদি বলা হয় এক সপ্তাহ বা এক মাস অথবা সারাজীবন চলতে থাকবে… তাহুলে কিভাবে সেটা প্রোগ্রামে রান করা যায়? হ্যা, সেটার জন্যই আমাদের প্রয়োজন লুপ স্টেটমেন্ট। যা সাধারনত আমরা দুইটা নামে চিনি- for লুপ এবং while লুপ। ব্যাশ প্রোগ্রামিং এ এই দুইটি লুপ কিভাবে কাজ করে তা আজকের পর্বে দেখাবো-

 

for লুপ

আমাদের যেহেতু বেসিক কিছু প্রোগ্রামিং নলেজ সম্পর্কে জ্ঞান আছে, লুপ সম্পর্কেও আশা করি সবাই একটু আধটু ওয়াকিব আছেন। আমি নিচে ব্যাশ প্রোগ্রামিং for লুপিং এর স্ট্রাকচার দেখিয়ে তা বিশ্লেষন করার চেষ্টা করছি-

for var in loopingLimit
do
   statement(to be executed)
done

এখন যদি আমরা চাই ১ থেকে ১০ পর্যন্ত সংখ্যাগুলো আমরা for লুপ চালানোর মাধ্যমে করবো তাহলে নিচের মতো লিখবো-

for i in 1 2 3 4 5 6 7 8 9 10
do
  echo $i
done
  • এখানে প্রথম লাইনে for লুপ কী-ওয়ার্ড নিয়ে i লিখেছি, এই i আসলে লুপ ভেরিয়েবল। যেটি লুপের প্রতিটি ইটারেশনকে ক্যারি করে। এরপর লুপিং লিমিট নিয়েছি, এটা ব্যাশে `seq _ _` (সিকুয়েন্স) ফাংশনের মাধ্যমেও নেয়া যায়। যেমন- যদি এখানে লিখতাম for i in `seq 1 10` তাহলেও একই আউটপুট পেতাম।
  • ২ নাম্বার লাইনে do অর্থাৎ যা করবো তার শুরু করেছি।
  • ৩ নাম্বার লাইনে স্টেটমেন্টে i প্রিন্ট করেছি, অর্থাৎ লুপের প্রতিটি ইটারেশনে i এর মান প্রিন্ট করতে বলেছি।
  • এরপর done কী-ওয়ার্ড দিয়ে do স্টেটমেন্ট ক্লোজ করেছি।

 

while লুপ

আমি নিচে ব্যাশ প্রোগ্রামিং while লুপিং এর স্ট্রাকচার দেখিয়ে তা বিশ্লেষন করার চেষ্টা করছি-

while command
do
 Statement (to be executed)
done

এখন যদি আমরা চাই ১ থেকে ১০ পর্যন্ত সংখ্যাগুলো আমরা for লুপ চালানোর মাধ্যমে করবো তাহলে নিচের মতো লিখবো-

i=1
while [ $i -le 10 ]
do
   echo $i
   i=$(($i+1))
done

 

  • এখানেও ফার্স্টেই i নামে একটা ভেরিয়েবল ডিক্লেয়ার করেছি, যেটা আমাদের লুপিং ভেরিয়েবল বলা চলে।
  • এরপর while কী-ওয়ার্ড দিয়ে কন্ডিশন লিখেছি, অর্থাৎ এটি 1 থেকে শুরু করে 10 পর্যন্ত চলবে।
  • এবং do স্টেটমেন্ট এর মধ্যে আমরা লুপিং ভেরিয়েবলের মান প্রিন্ট করেছি এবং লুপ পরবর্তীতে চলার জন্য i এর মান এক এক করে প্রতি ইটারেশনে বারিয়েছি।
  • সর্বশেষ done কী-ওয়ার্ড লিখে do স্টেটমেন্ট শেষ করেছি।

তাহলেই while লুপের মাধ্যমেও আমরা for লুপের ঐ একই আউটপুট পাবো। এভাবে সাধারণত দুইটা লুপের যেকোন একটি ইউজ করেই যেকোন প্রবলেম সলভ করা যায়। যার কাছে যেটা সহজবোধ্য মনে হবে সেটি দিয়ে কাজ করবে… তবে সময় সাপেক্ষে কাজের সুবিধা- অসুবিধার জন্য আলাদা যেকোন একটি ব্যবহার করা যেতে পারে।

আজকের লেখা এপর্যন্তই, পরবর্তীতে কিছু এক্সামপল এবং প্রবলেম সলভিং নিয়ে লেখার যেষ্টা করবো। সবার জন্য শুভ কামনা রইলো…