বাশ স্ক্রিপ্ট আপনাকে কমান্ড লাইন টাস্ক অটোমেট করার একটি সুবিধাজনক উপায় দেয়।
বাশে, আপনি অন্য স্ক্রিপ্টিং বা প্রোগ্রামিং ল্যাঙ্গুয়েজে যা করবেন প্রায় সব কিছু করতে পারেন। আপনি ভেরিয়েবল তৈরি ও ব্যবহার করতে পারেন, লুপ এক্সিকিউট করতে পারেন, কন্ডিশনাল লজিক ব্যবহার করতে পারেন, এবং ডেটা অ্যারেতে সংরক্ষণ করতে পারেন।
যদিও ফাংশনালিটি খুব পরিচিত হতে পারে, বাশের সিনট্যাক্সটা ট্রিকি (tricky) হতে পারে। এই আর্টিকেলে, আপনি শিখবেন কীভাবে অ্যারে ডিক্লেয়ার করতে হয় এবং তারপর কীভাবে সেগুলো আপনার কোডে ব্যবহার করতে হয়।
বাশে অ্যারে ডিক্লেয়ার করার পদ্ধতি
বাশে অ্যারে ডিক্লেয়ার করা সহজ, কিন্তু সিনট্যাক্সে মনোযোগ দিতে হবে। যদি আপনি অন্যান্য ল্যাঙ্গুয়েজে প্রোগ্রামিং করার অভ্যাসী হন, তবে কোডটি পরিচিত লাগতে পারে, কিন্তু সূক্ষ্ম পার্থক্যগুলো আছে যাগুলো সহজে মিস হয়ে যেতে পারে।
আপনার অ্যারে ডিক্লেয়ার করতে এই ধাপগুলো ফলো করুন:
- আপনার অ্যারে একটি নাম দিন
- সেই ভেরিয়েবল নামের পরে একটি ইকুয়াল সাইন দিন। ইকুয়াল সাইনটির চারপাশে কোনো স্পেস থাকা উচিত নয়
- অ্যারেটি পেরেনথেসিস (parentheses) দিয়ে এনক্লোজ করুন (জাভাস্ক্রিপ্টের মত ব্র্যাকেটস নয়)
- কোটেশন ব্যবহার করে আপনার স্ট্রিংগুলো টাইপ করুন, কিন্তু তাদের মাঝপথে কমা (comma) থাকবে না
আপনার অ্যারে ডিক্লেয়ারেশন কিছু এই রকম দেখাবে:
myArray=("cat" "dog" "mouse" "frog)
এটুকুই! ইতটুকুই সহজ।
বাশে অ্যারে এক্সেস করার পদ্ধতি
আপনার অ্যারে דרך লুপ করার একাধিক উপায় আছে। আপনি অ্যারে এলিমেন্টগুলোয় דרך লুপ করতে পারেন, অথবা ইনডেক্সগুলোয় דרך লুপ করতে পারেন।
অ্যারে এলিমেন্টগুলো דרך লুপ করার পদ্ধতি
অ্যারে এলিমেন্টগুলো דרך লুপ করতে আপনার কোডটি কিছু এই রকম দেখাবে:
for str in ${myArray[@]}; do echo $str done
এটি ব্রেক ডাউন করলে: এটি কিছুটা জাভাস্ক্রিপ্টের forEach এর মত। অ্যারেতে (myArray) প্রতিটি স্ট্রিং (str)-এর জন্য, সেই স্ট্রিংটি প্রিন্ট করুন।
এই লুপের আউটপুট এমন দেখাবে:
cat dog mouse frog
নোট: স্কয়ার ব্র্যাকেটসindeki @ সিম্বলটি ইঙ্গিত করে যে আপনি অ্যারেতে সকল এলিমেন্টের মাধ্যমে লুপ করছেন। যদি আপনি সেটি বাদ দিয়ে শুধু for str in ${myArray} লিখেন, তবে অ্যারের প্রথম স্ট্রিংটি মাত্র প্রিন্ট হবে।
অ্যারে ইনডেক্সগুলো דרך লুপ করার পদ্ধতি
বিকল্পভাবে, আপনি অ্যারের ইনডেক্সগুলো דרך লুপ করতে পারেন। এটি জাভাস্ক্রিপ্টের for লুপের মত, এবং তখন উপযোগী হয় যখন আপনি প্রতিটি এলিমেন্টের ইনডেক্স এক্সেস করতে চান।
এই মেথড ব্যবহার করতে আপনার কোডটি নিচের মতো দেখাবে:
for i in ${!myArray[@]}; do echo "element $i is ${myArray[$i]}" done
আউটপুট এমন দেখাবে:
element 0 is cat element 1 is dog element 2 is mouse element 3 is frog
নোট: myArray ভেরিয়েবলের শুরুতে এক্সক্লামেশন মার্ক (exclamation mark) থাকা ইঙ্গিত করে যে আপনি অ্যারের ইনডেক্সগুলো এক্সেস করছেন, এলিমেন্টগুলো নয়। এটি গুলাম করতে পারে যদি আপনি এক্সক্লামেশন মার্ককে নেগেশন (negation) বোঝাতে অভ্যাসী হন, তাই সতর্ক থাকুন।
আরেকটি নোট: বাশ সাধারণত ভেরিয়েবলসের জন্য কার্লি ব্রেসেস (curly braces) আবশ্যক নয়, কিন্তু অ্যারে জন্য আবশ্যক। তাই আপনি লক্ষ্য করবেন যে যখন আপনি একটি অ্যারে রেফারেন্স করেন, তখন সিনট্যাক্স হবে ${myArray}, কিন্তু যখন একটি স্ট্রিং বা নম্বর রেফারেন্স করেন, তখন শুধু ডলার সাইন: $i।
উপসংহার
বাশ স্ক্রিপ্ট অটোমেটেড কমান্ড লাইন বিহেভিয়র তৈরির জন্য উপযোগী, এবং অ্যারে একাধিক ডেটা সংরক্ষণের জন্য একটি চমৎকার টুল।
এগুলো ডিক্লেয়ার ও ব্যবহার করা কঠিন নয়, কিন্তু অন্যান্য ল্যাঙ্গুয়েজ থেকে ভিন্ন, তাই ভুল এড়াতে গভীর মনোযোগ দিন।