ব্যাশ স্ক্রিপ্টে কমান্ড লাইন আর্গুমেন্টগুলি কীভাবে পরিচালনা করবেন

How Handle Command Line Arguments Bash Script



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

যুক্তি ভেরিয়েবল ব্যবহার করে:

আর্গুমেন্ট ভেরিয়েবল $ 0 থেকে শুরু হয়। মূল স্ক্রিপ্ট ফাইলের নাম $ 0 তে সংরক্ষণ করা হয় যা কমান্ড লাইন আর্গুমেন্ট থেকে আর্গুমেন্ট মান গ্রহণ করে। যদি দুটি আর্গুমেন্ট কমান্ড লাইনে পাস করা হয় তাহলে আর্গুমেন্টের মান $ 1 এবং $ 2 ভেরিয়েবলের ক্রমানুসারে পাওয়া যাবে।







উদাহরণ -1: আর্গুমেন্ট হিসাবে তিনটি সংখ্যাসূচক মান পাঠানো

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



#!/বিন/ব্যাশ

# যুক্তির মোট সংখ্যা গণনা
বের করে দিল 'আর্গুমেন্টের মোট সংখ্যা: $#'

# পৃথকভাবে যুক্তি মান পড়া
বের করে দিল 'প্রথম আর্গুমেন্ট মান: $ 1'
বের করে দিল 'দ্বিতীয় যুক্তি মান: $ 2'
বের করে দিল 'তৃতীয় যুক্তির মান: $ 3'

# লুপ ব্যবহার করে আর্গুমেন্ট মান পড়া
জন্যargvalভিতরে '[ইমেল সুরক্ষিত]'
কর
বের করে দিল -এন '$ argval'
সম্পন্ন

# যুক্তির মান যোগ করা
যোগফল= $(($ 1+$ 2+$ 3))

# ফলাফল প্রিন্ট করুন
বের করে দিল -এবং 'nযোগফল =$ যোগফল'

তিনটি সংখ্যাসূচক যুক্তি মান সহ ব্যাশ ফাইলটি চালান।



$বাশcmdline1.shপঞ্চাশ 35 পনের





উদাহরণ -২: যুক্তি হিসেবে ফাইলের নাম নেওয়া

একটি ব্যাশ ফাইল তৈরি করুন এবং যেকোনো ফাইলের মোট অক্ষরের সংখ্যা গণনা করতে নিম্নলিখিত কোড যোগ করুন। এখানে, ফাইলের নাম কমান্ড লাইন যুক্তি হিসাবে পাস করা হবে।

#!/বিন/ব্যাশ
ফাইলের নাম=$ 1
মোটচর='wc -সি $ filename'
বের করে দিল 'মোট অক্ষর সংখ্যা$ totalchar'

ফাইলের নাম সহ বাশ স্ক্রিপ্টটি একক আর্গুমেন্ট মান হিসাবে চালান এবং সেই ফাইলের মোট অক্ষরের সংখ্যা পরীক্ষা করার জন্য অন্য একটি কমান্ড চালান। এখানে, employee.txt ফাইলটি আর্গুমেন্ট মান হিসাবে ব্যবহৃত হয়। Employee.txt ফাইলের মোট অক্ষর সংখ্যা 204।



$বাশcmdline2.sh employee.txt
$wc -সিemployee.txt

Getopts ফাংশন ব্যবহার করে:

আপনি যদি ডাটাবেস বা কোন ফাইলে ডেটা সঞ্চয় করতে চান অথবা কমান্ড লাইন আর্গুমেন্ট ভ্যালুর উপর ভিত্তি করে নির্দিষ্ট ফরম্যাটে একটি রিপোর্ট তৈরি করতে চান getopts ফাংশন হল টাস্ক করার সবচেয়ে ভালো বিকল্প। এটি একটি অন্তর্নির্মিত লিনাক্স ফাংশন। সুতরাং, আপনি কমান্ড লাইন থেকে ফরম্যাট করা ডেটা পড়তে আপনার স্ক্রিপ্টে এই ফাংশনটি সহজেই ব্যবহার করতে পারেন।

উদাহরণ -1: getopts ফাংশন দ্বারা আর্গুমেন্ট পড়া

একটি ব্যাশ ফাইল তৈরি করুন এবং এর ব্যবহার বুঝতে নিম্নলিখিত স্ক্রিপ্ট যোগ করুন getopts ফাংশন 'Getopts' ফাংশনটি কমান্ড লাইন আর্গুমেন্ট অপশন এবং আর্গুমেন্ট ভ্যালু পড়ার জন্য while লুপ দিয়ে ব্যবহার করা হয়। এখানে, 4 টি বিকল্প ব্যবহার করা হয় যা হল 'আমি', 'এন', 'মি' এবং 'এবং' । কেস স্টেটমেন্টটি বিশেষ বিকল্পের সাথে মেলে এবং একটি ভেরিয়েবলে আর্গুমেন্ট মান সংরক্ষণ করতে ব্যবহৃত হয়। অবশেষে, ভেরিয়েবলের মানগুলি মুদ্রণ করুন।

#!/বিন/ব্যাশ
যখন getopts ':আমার মধ্যে:'রাগান্বিত;কর
কেস $ আর্গ ভিতরে
আমি) আইডি=$ OPTARG;;
n) নাম=$ OPTARG;;
মি) উৎপাদনের তারিখ=$ OPTARG;;
এবং) মেয়াদ উত্তীর্ণের তারিখ=$ OPTARG;;
esac
সম্পন্ন
বের করে দিল -এবং 'n$ ID $ নাম $ Manufacturing_date $ মেয়াদ শেষ হওয়ার তারিখn'

নিম্নলিখিত বিকল্প এবং যুক্তি মান সঙ্গে ফাইল চালান। এখানে, p100 হল -i বিকল্পের মান, 'হট কেক' -n বিকল্পের মান, '01 -01-2018 -হল -m বিকল্পের মান এবং '06 -01-2018 এর মান - e অপশন।

$বাশcmdline3.sh-আইp001-এন '্রভগ' -মি '01 -01-2018 ' -এবং '06 -01-2018 '

যখন আপনি একটি স্ক্রিপ্টে সহজ মান পাঠাতে চান তখন যুক্তি ভেরিয়েবল ব্যবহার করা ভাল। কিন্তু যদি আপনি একটি বিন্যাসিত উপায়ে ডেটা পাঠাতে চান তাহলে আর্গুমেন্ট মানগুলি পুনরুদ্ধার করতে getopts ফাংশন ব্যবহার করা ভাল। আরো তথ্যের জন্য দেখুন ভিডিও !