আমি কিভাবে একটি বাশ স্ক্রিপ্টে যুক্তি পাস করব?

How Do I Pass Argument Bash Script



বেশিরভাগ লিনাক্স মিন্ট 20 ব্যবহারকারীরা ব্যাশ স্ক্রিপ্টে একটি যুক্তি পাস করার সময় নিজেকে আটকে রাখে। এটি কার্যকর করা হলে আপনি যেকোনো ব্যাশ স্ক্রিপ্টে আর্গুমেন্ট প্রেরণ করতে পারেন। ব্যাশ স্ক্রিপ্টে আর্গুমেন্ট পাস করার বেশ কয়েকটি সহজ এবং দরকারী উপায় রয়েছে। এই আর্টিকেল গাইডে, আমরা আপনাকে আপনার ব্যাশ স্ক্রিপ্টগুলিতে আর্গুমেন্ট পাস এবং ব্যবহার করার কিছু সহজ উপায় সম্পর্কে জানাব।

ডিফল্ট ভেরিয়েবল ব্যবহার করে আর্গুমেন্ট পাস করা:

টাচ কমান্ড ব্যবহার করে যেকোনো নাম দিয়ে একটি নতুন ফাইল তৈরি করুন, যেমন, file.sh.







$স্পর্শফাইলের নাম



এই নতুন তৈরি ফাইলটি খুলুন এবং এতে কিছু ব্যাশ স্ক্রিপ্ট যুক্ত করুন। আমি কিছু ডিফল্ট ভেরিয়েবল যুক্ত করেছি, যেমন $ 1, $ 2, এবং $ 3 ফলস্বরূপ। টার্মিনালের মধ্য দিয়ে যা কিছু আর্গুমেন্ট পাস হবে তা বর্ণিত ভেরিয়েবলে সংরক্ষণ করা হবে।







আপনাকে এই ফাইলটি ./ কমান্ড ব্যবহার করে চালাতে হবে কিছু আর্গুমেন্ট অনুসরণ করে। আপনি ছবিতে দেখতে পাচ্ছেন যে যখন আমি আর্গুমেন্ট পাস করি, একটি ত্রুটি ঘটে: অনুমতি অস্বীকার করা হয়েছে। কারণ এই ফাইলটির এক্সিকিউশন রাইটস নেই।

$/ফাইলের নাম যুক্তি 1 যুক্তি 2 যুক্তি

সুতরাং এই ফাইলের এক্সিকিউশন অধিকার প্রদানের জন্য, এটি করার জন্য sudo chmod কমান্ডটি ব্যবহার করুন।



$sudo chmod+x ফাইলের নাম

এখন, আবার একই উপরের কমান্ড ব্যবহার করে ফাইলটি চালান। এবার আমি বিভিন্ন যুক্তি প্রদান করেছি। আপনি দেখতে পাবেন নতুন পাস করা আর্গুমেন্টগুলি ডিফল্ট ভেরিয়েবলে সংরক্ষিত আছে।

যুক্তি হিসাবে শেল স্ক্রিপ্ট নাম পাস করা:

এখন, একই পুরানো ফাইল file.sh ব্যবহার করে তার ডিফল্ট ভেরিয়েবলে সামান্য পরিবর্তন। আপনাকে স্ক্রিপ্টে $ 0 ভেরিয়েবল যোগ করতে হবে।

একই ./ শেল স্ক্রিপ্ট কমান্ড চালানোর ক্ষেত্রে, আপনার শেল স্ক্রিপ্টের নাম, যেমন ./filename যুক্তি হিসাবে $ 0 ভেরিয়েবলে সংরক্ষণ করা হবে।

ভেরিয়েবল থেকে অ্যারে হিসাবে আর্গুমেন্ট পাস করা:

একই ফাইল file.sh দিয়ে শুরু করে, আপনাকে পুরানো স্ক্রিপ্টে কিছু অতিরিক্ত লাইন যোগ করতে হবে। অ্যারে নামের একটি ভেরিয়েবল ঘোষণা করুন। একটি ডিফল্ট ভেরিয়েবল [ইমেল সুরক্ষিত] যোগ করুন যা ব্যবহারকারীর প্রবেশ করা আর্গুমেন্টগুলিকে অ্যারে হিসাবে সংরক্ষণ করবে। এই আর্গুমেন্টগুলি পরিবর্তনশীল অ্যারে বিশ্লেষণ করা হবে। শেষ লাইনটি সূচক সংখ্যা দ্বারা সাজানো ভেরিয়েবল অ্যারের সমস্ত যুক্তি প্রদর্শন করবে।

./ শেল স্ক্রিপ্টটি চালান। আপনি দেখতে পাবেন যে এটি [ইমেল সুরক্ষিত] একটি অ্যারে হিসাবে সংরক্ষিত আর্গুমেন্ট বা মানগুলি প্রদর্শন করবে পরিবর্তনশীল অ্যারেতে পার্স করা কিন্তু দ্বিতীয় ইকো স্টেটমেন্টে শেল স্ক্রিপ্টের নাম নয়। আপনি নিম্নলিখিত আউটপুট পাবেন।

$/ফাইলের নাম যুক্তি 1 যুক্তি 2 যুক্তি

একই স্ক্রিপ্ট সহ একই ফাইল ব্যবহার করুন। ছবিতে স্পষ্ট হিসাবে শেষ লাইন থেকে শুধু $ {array [3]} সরান।

./ কমান্ডটি চালানোর পর, আপনি উপরের উদাহরণে কোন পরিবর্তন ছাড়াই পেয়েছেন যেমন একটি অনুরূপ আউটপুট দেখতে পাবেন।

ব্যাশ স্ক্রিপ্টের শেষ লাইনটি একটি একক শব্দ দিয়ে প্রতিস্থাপন করে আপনি একই ফলাফল পেতে পারেন। আপনাকে শুধু ইকো স্টেটমেন্টে [email protected] যোগ করতে হবে, এবং এটি এই ভেরিয়েবল অ্যারেতে উপস্থিত আর্গুমেন্ট প্রদর্শন করবে।

সুতরাং ./ কমান্ডটি আবার চালানো, আপনি একই ফলাফল পাবেন।

পাস করা আর্গুমেন্টের মোট সংখ্যা পরীক্ষা করুন:

বিপরীতে, আপনি যদি ব্যবহারকারীর দ্বারা পাস করা মোট যুক্তিগুলির সংখ্যা জানতে চান, আপনি এটিও করতে পারেন। এই উদ্দেশ্যে, আপনাকে শুধু [ইমেল সুরক্ষিত] প্রতিস্থাপন করতে হবে $# প্রতিধ্বনিতে।

। আমাদের ক্ষেত্রে, 3 টি আর্গুমেন্ট মান হিসাবে পাস করা হয়।

আর্গুমেন্টের লাইন আউটপুট দ্বারা লাইন তৈরি করুন:

হোম ডিরেক্টরিতে একটি নতুন ফাইল test.sh তৈরি করুন। দেখানো হিসাবে ব্যাশ স্ক্রিপ্ট যোগ করুন।

এখন বিভিন্ন যুক্তি দিয়ে একই পুরানো কমান্ড চালান। প্রথমত, আপনি ত্রুটি দেখতে পাবেন: অনুমতি অস্বীকার করা হয়েছে।

এই ফাইলটি sudo বিশেষাধিকার প্রদানের জন্য আপনাকে chmod কমান্ডটি চালাতে হবে। এর পরে, ./ শেল স্ক্রিপ্ট কমান্ডটি আবার চালান। এবং আপনি আর্গুমেন্টের সাজানো আউটপুট দ্বারা লাইন পাবেন।

আর্গুমেন্ট ইনডেক্স নম্বরের মাধ্যমে পরিবর্তনশীল সীমাবদ্ধ করুন:

আপনি যদি ভেরিয়েবলের সূচক সংখ্যা ব্যবহার করে সীমাবদ্ধ করতে চান, তাহলে আপনি এটি খুব সহজেই করতে পারেন। $ চিহ্নের পরে কোঁকড়া বন্ধনী যুক্ত করুন এবং যুক্তি সূচক নম্বর যোগ করুন যা আপনি অন্যান্য আর্গুমেন্টের আগে প্রদর্শন করতে চান।

যদি ব্যবহারকারীরা প্রদত্ত যুক্তিগুলি সীমা পরিবর্তনশীলতে প্রদত্ত সূচক সংখ্যার চেয়ে কম হয়, তাহলে আপনি একটি খালি যুক্তি মান পাবেন। উদাহরণস্বরূপ, আমি 4 টি আর্গুমেন্ট প্রদান করেছি, কিন্তু আমি 05 টি আর্গুমেন্ট মান প্রদর্শন করার জন্য দিয়েছি। এই অবস্থায়, ভেরিয়েবলটি খালি প্রদর্শিত হবে কারণ পঞ্চম যুক্তি পাস হয়নি।

কিন্তু যখন আপনি কমান্ডের সমান বা বেশি সংখ্যক আর্গুমেন্ট পাস করবেন, তখন আপনি দেখানো ফলাফলে প্রদর্শিত মান পাবেন।

নির্দিষ্ট মান যুক্তি পরীক্ষা করা হচ্ছে:

আপনার হোম ডিরেক্টরিতে Check.sh নাম দিয়ে একটি নতুন ফাইল তৈরি করুন। নিচের ছবিতে দেখানো একই বাশ স্ক্রিপ্ট যোগ করুন। এই স্ক্রিপ্টে, ব্যবহারকারীর পাস করা আর্গুমেন্ট মান সংরক্ষণ করার জন্য আমাদের একটি পরিবর্তনশীল var আছে। তারপরে আমাদের একটি if স্টেটমেন্ট আছে, যা আর্গুমেন্টের মান মিলবে কিনা তা পরীক্ষা করবে। যদি আর্গুমেন্টের মান বন্ধনীতে প্রদত্ত মানের সাথে মিলে যায়, তাহলে প্রথম ইকো স্টেটমেন্টটি কার্যকর করা হবে। যদি মান না মেলে, দ্বিতীয় ইকো স্টেটমেন্ট কার্যকর করা হবে।

যখন আমরা শেল স্ক্রিপ্ট কমান্ড চালাই, এটি একটি ত্রুটি উত্থাপন করবে। Chmod কমান্ড ব্যবহার করে, আমরা এই ত্রুটিটি সংশোধন করতে পারি।

এর পরে, কিছু যুক্তি মান সহ নির্দিষ্ট ফাইলের জন্য শেল স্ক্রিপ্টটি চালান। আমাদের ক্ষেত্রে, আমরা একটি যুক্তি মান হিসাবে আকসা প্রদান করেছি, যা বন্ধনীতে প্রদর্শিত মান সমান। সুতরাং ব্যাশ স্ক্রিপ্টটি প্রথম ইকো স্টেটমেন্টটি দেখানো হবে।

অন্যদিকে, যদি আপনি শেল স্ক্রিপ্টে বিভিন্ন আর্গুমেন্ট মান প্রদান করেন, তাহলে এটি অন্য ইকো স্টেটমেন্ট প্রদর্শন করবে। এখানে, আমি একটি যুক্তি মান হিসাবে রিমশা যুক্ত করেছি, যা if স্টেটমেন্টে প্রদত্ত মান থেকে আলাদা। সুতরাং bash স্ক্রিপ্ট দ্বিতীয় ইকো স্টেটমেন্টটি এক্সিকিউট করবে।

উপসংহার:

আমি আশা করি এই নির্দেশিকা আপনাকে ডিফল্ট ভেরিয়েবলে আর্গুমেন্ট কিভাবে পাস করতে হবে, আর্গুমেন্ট ভ্যালুতে একটি অ্যারে হিসেবে পাস করতে হবে, আর্গুমেন্টের মোট সংখ্যা পেতে হবে, আর্গুমেন্টের লাইন আউটপুট দ্বারা লাইন পেতে হবে ইনডেক্স নম্বর ব্যবহার করে আউটপুট, নির্দিষ্ট মান যুক্তি পরীক্ষা করা এবং আরও অনেক কিছু।