একটি বাশ স্ক্রিপ্ট আর্গুমেন্ট পাস কিভাবে

কমান্ড, সিনট্যাক্স এবং উদাহরণ

আপনি একটি bash স্ক্রিপ্ট লিখতে পারেন যাতে কমান্ড লাইন থেকে স্ক্রিপ্টটি বলা হয় যখন এটি নির্দিষ্ট আর্গুমেন্টগুলি পাওয়া যায়। এই পদ্ধতিটি যখন একটি স্ক্রিপ্ট ইনপুট প্যারামিটার (আর্গুমেন্ট) মানগুলির উপর নির্ভর করে একটি সামান্য ভিন্ন ফাংশন সঞ্চালন করতে ব্যবহৃত হয়।

উদাহরণস্বরূপ, আপনার "stats.sh" নামক একটি স্ক্রিপ্ট থাকতে পারে যা একটি ফাইলের একটি নির্দিষ্ট অপারেশন করে, যেমন তার শব্দগুলি গণনা করা। আপনি যদি সেই ফাইলটি অনেকগুলি ফাইলে ব্যবহার করতে চান তবে এটি একটি আর্গুমেন্ট হিসাবে ফাইলের নামটি প্রেরণ করা সর্বোত্তম, যাতে আপনি সমস্ত ফাইলগুলির প্রক্রিয়া করার জন্য একই স্ক্রিপ্ট ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি ফাইলটি প্রক্রিয়াকরণের জন্য "গেন্ডলিস্ট" হয় তবে আপনি নিম্নোক্ত কমান্ড লাইনটি লিখবেন:

শ শ

$ 1, $ 2, $ 3, ইত্যাদি ভেরিয়েবল ব্যবহার করে একটি স্ক্রিপ্টের মধ্যে আর্গুমেন্ট অ্যাক্সেস করা হয়, যেখানে $ 1 প্রথম আর্গুমেন্টকে বোঝায়, দ্বিতীয় আর্গুমেন্টে $ 2, ইত্যাদি। এই নিম্নলিখিত উদাহরণ সচিত্র করা হয়:

FILE1 = $ 1 wc $ FILE1

পঠনযোগ্যতার জন্য, প্রথম আর্গুমেন্টের মান ($ 1) এর মান একটি বর্ণনামূলক নাম দিয়ে একটি ভেরিয়েবল নির্দিষ্ট করুন এবং তারপর এই ভেরিয়েবল ($ FILE1) এ শব্দ গণনা ইউটিলিটি ( wc ) কল করুন।

যদি আপনার একটি ভেরিয়েবলের আর্গুমেন্ট সংখ্যা থাকে, তবে আপনি "$ @" ভেরিয়েবল ব্যবহার করতে পারেন, যা সমস্ত ইনপুট প্যারামিটারের একটি অ্যারে। এর অর্থ হল আপনি একটি for-loop ব্যবহার করতে পারেন, প্রতিটি উদাহরণকে পুনরাবৃত্তি করার জন্য , যেমন নিম্নোক্ত উদাহরণে ব্যাখ্যা করা হয়েছে:

"$ @" এ FILE1 এর জন্য wc $ FILE1 সম্পন্ন হয়েছে

কমান্ড লাইন থেকে আর্গুমেন্টগুলির সাহায্যে এই স্ক্রিপ্টটি কীভাবে কল করা যায় এখানে একটি উদাহরণ:

sh stats.sh songlist1 songlist2 songlist3

যদি একটি যুক্তি স্পেস আছে, আপনি এটি একক উদ্ধৃতি চিহ্নের সাথে সংযুক্ত করতে হবে। উদাহরণ স্বরূপ:

sh stats.sh 'গান তালিকা 1' 'গান তালিকা 2' 'গানের তালিকা 3'

প্রায়শই একটি স্ক্রিপ্ট লেখা হয় যে ব্যবহারকারী পতাকাগুলি ব্যবহার করে যেকোনো ক্রমে আর্গুমেন্টগুলি পাস করতে পারে। পতাকা পদ্ধতি দ্বারা, আপনি আর্গুমেন্ট ঐচ্ছিক কিছু করতে পারেন।

আপনার একটি লিখিত স্ক্রিপ্ট আছে যা নির্দিষ্ট প্যারামিটারের উপর ভিত্তি করে ডেটাবেস থেকে তথ্য উদ্ধার করে যেমন "ব্যবহারকারী নাম", "তারিখ", এবং "পণ্য", এবং নির্দিষ্ট "ফরম্যাটে" একটি প্রতিবেদন তৈরি করে। এখন আপনি আপনার স্ক্রিপ্ট লিখতে চান যাতে স্ক্রিপ্ট বলা হয় যখন আপনি এই পরামিতি মধ্যে পাস করতে পারেন। এটি এই মত চেহারা হতে পারে:

makereport -u জেএসআইএম-পি নোটবুকে -ডি 10-20-2011 -f পিডিএফ

Bash এই বৈশিষ্ট্যটি "getopts" ফাংশন সহ সক্ষম করে। উপরের উদাহরণের জন্য, আপনি নীচের Getopts ব্যবহার করতে পারে:

এটি একটি সময়-লুপ যে "getopts" ফাংশন এবং একটি তথাকথিত "optstring" ব্যবহার করে, এই ক্ষেত্রে "আ:: d: p: f:", আর্গুমেন্টগুলির মাধ্যমে পুনরাবৃত্তির জন্য। যখন-লুপ অপটস্ট্রিং এর মাধ্যমে চলে যায়, যা আর্গুমেন্ট পাস করতে ব্যবহার করা পতাকাগুলি এবং ভেরিয়েবল "বিকল্প" এ পতাকাটির জন্য প্রদত্ত আর্গুমেন্ট মান নির্ধারণ করে। কেস-স্টেটমেন্ট তারপর একটি বৈশ্বিক ভেরিয়েবলের ভেরিয়েবল "বিকল্প" এর মান নির্ধারণ করে যা সমস্ত আর্গুমেন্ট পড়ার পরে ব্যবহার করা যায়।

অপ্টস্ট্রিংয়ের কলোনগুলি বোঝায় যে সংশ্লিষ্ট পতাকাগুলির জন্য মানগুলি প্রয়োজন। উপরে উল্লিখিত সমস্ত পতাকাগুলি একটি কোলন দ্বারা অনুসরণ করা হয়: "u: d: p: f:"। এর মানে, সমস্ত পতাকাগুলি একটি মান প্রয়োজন। উদাহরণস্বরূপ, উদাহরণস্বরূপ, "ডি" এবং "ফল" পতাকাগুলি একটি মান বলে প্রত্যাশা করা হয় না, optstring "u: dp: f" হবে।

Optstring প্রারম্ভে একটি কোলন, উদাহরণস্বরূপ ": u: d: p: f:", একটি সম্পূর্ণ ভিন্ন অর্থ আছে। এটি আপনাকে ফ্ল্যাগগুলি পরিচালনা করতে দেয় যা optstring তে প্রতিনিধিত্ব করা হয় না। সেই ক্ষেত্রে "বিকল্প" ভেরিয়েবলের মান "?" এবং "OPTARG" এর মূল্য অপ্রত্যাশিত পতাকা সেট করা হয়। আপনি ভুল ব্যবহারকারীর তথ্য একটি উপযুক্ত ত্রুটি বার্তা প্রদর্শন করতে পারবেন।

আর্গুমেন্ট যে একটি পতাকা দ্বারা পূর্বে না হয় getopts দ্বারা উপেক্ষা করা হয়। যদি স্ক্রিপ্টটি বলা হয় তবে Optstring- এ উল্লিখিত পতাকাগুলি সরবরাহ করা হয় না, যদি না আপনি বিশেষভাবে আপনার কোডে এই কেসটি পরিচালনা করেন। Getops দ্বারা পরিচালিত কোন আর্গুমেন্ট এখনও নিয়মিত $ 1, $ 2, ইত্যাদি ভ্যারিয়েবলের সাথে ধরা যায়।