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

Base Kamanda La Ina Argumentaguli Kibhabe Paricalana Karabena



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

ইনপুট এবং আউটপুটকে প্রভাবিত করতে আপনি এই আর্গুমেন্টগুলিকে ভিন্নভাবে কনফিগার করতে পারেন। এই কারণেই ব্যাশে কমান্ড-লাইন আর্গগুলি পরিচালনা করা অপরিহার্য, তবে অনেক নতুন ব্যবহারকারীকে এটি কীভাবে করতে হয় তা শিখতে হবে। তাই এই গাইডে, আমরা ব্যাশে কমান্ড-লাইন আর্গুমেন্টগুলি পরিচালনা করার বিভিন্ন উপায় ব্যাখ্যা করব।







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

বাশে কমান্ড লাইন আর্গগুলি পরিচালনা করার বিভিন্ন উপায় রয়েছে তাই আসুন সংক্ষিপ্ত তথ্য পেতে সেগুলি দেখে নেওয়া যাক:



getopt ফাংশন



getopt ফাংশনটি সুবিধাজনক কারণ এটি ব্যাশে আর্গুমেন্টগুলিকে সংজ্ঞায়িত এবং পার্স করার জন্য বিকল্প এবং সিনট্যাক্স প্রদান করে। এটি লিনাক্সের একটি অন্তর্নির্মিত ফাংশন যা আপনি আর্গুমেন্টের উপর ভিত্তি করে একটি নির্দিষ্ট বিন্যাসে একটি ডাটাবেস ফাইল বা প্রতিবেদন তৈরি করার সময় ব্যবহার করতে পারেন। getopt ফাংশন ছোট কমান্ড-লাইন আর্গুমেন্ট পার্স করতে সাহায্য করে কারণ দুই ধরনের আর্গুমেন্ট আছে:





  • সংক্ষিপ্ত আর্গুমেন্ট: এগুলি হল একক-অক্ষরের আর্গুমেন্ট যার পরে হাইফেন রয়েছে৷ উদাহরণস্বরূপ, -a, -l, -h, ইত্যাদি, একক আর্গুমেন্টের কয়েকটি উদাহরণ।

  • দীর্ঘ আর্গুমেন্ট: এগুলি হল বহু-অক্ষরের আর্গুমেন্ট যার পরে একটি ডবল-হাইফেন। দীর্ঘ আর্গুমেন্টের বিভিন্ন উদাহরণ আছে, যেমন –all, –list, –help ইত্যাদি।

একটি উদাহরণ নেওয়া যাক যেখানে আমরা getopt ইউটিলিটি ব্যবহার করে কমান্ড লাইন আর্গুমেন্টগুলি পরিচালনা করব। আমরা 'getopt.sh' নামে একটি ব্যাশ স্ক্রিপ্ট তৈরি করেছি যাতে নিম্নলিখিত তথ্য রয়েছে:



!/ বিন / বাশ

যখন getopts 'এ বি সি ডি:' বিস্তারিত করতে

মামলা ' $বিস্তারিত ' ভিতরে

)

প্রতিধ্বনি 'নাগরিকের নাম $OPTARG ' ;;

)

প্রতিধ্বনি 'নাগরিক আইডি হল $OPTARG ' ;;

)

প্রতিধ্বনি 'জন্মস্থান হল $OPTARG ' ;;

ডি )

প্রতিধ্বনি 'পেশা হল $OPTARG ' ;;

* )

প্রস্থান 1 ;;

esac

সম্পন্ন

স্থানান্তর ' $(($OPTING -1) )'



যদি [ ! -সঙ্গে $1 ] ; তারপর

প্রতিধ্বনি 'বৈবাহিক অবস্থা $1'

অন্য

প্রতিধ্বনি 'কোন এন্ট্রি নেই'

প্রস্থান 1

থাকা



যদি [ ! -সঙ্গে $2 ] ; তারপর

প্রতিধ্বনি 'পরিবারের সদস্য $2'

থাকা

এখন ইনপুটে প্রয়োজনীয় আর্গুমেন্ট সহ স্ক্রিপ্টটি কার্যকর করা যাক:

আপনি উপরের ছবিতে দেখতে পাচ্ছেন, আমরা শুধুমাত্র getopt ফাংশন দিয়ে স্ক্রিপ্ট চালাই এবং তারপর সম্পূর্ণ ফলাফল পেতে স্বাভাবিক আর্গুমেন্ট যোগ করি।

পতাকা ব্যবহার করে

পতাকাগুলি হাইফেন(-) দ্বারা পূর্বে একক অক্ষর ছাড়া কিছুই নয়। যখন আমরা গেটোপ্ট ফাংশন ব্যবহার করে আর্গুমেন্ট পাস করি, তখন আমরা পতাকা ব্যবহার করি। -a, -b, -c পতাকার কিছু উদাহরণ। যেমন, একটি স্ক্রিপ্টে একজন নাগরিকের নাম, আইডি, স্থান, বয়স এবং পেশা প্রয়োজন। তাই, আমরা নাগরিকের নাম, আইডি, স্থান, বয়স এবং পেশা একই সাথে সংজ্ঞায়িত করতে j, k, l, m, n, পতাকা ব্যবহার করেছি:

#!/bin/bash

যখন getopts j:k:l:m:n: flag_info

করতে

মামলা ' ${flag_info} ' ভিতরে
< ol >
< যে > j ) নাগরিক নাম = ${OPTARG} ;; যে >
< যে > k ) নাগরিক আইডি = ${OPTARG} ;; যে >
< যে > l ) স্থান = ${OPTARG} ;; যে >
< যে > মি ) বয়স = ${OPTARG} ;; যে >
< যে > n ) পেশা = ${OPTARG} ;; যে >
ol >
esac

সম্পন্ন

প্রতিধ্বনি 'এখানে প্রবেশ করা বিশদ রয়েছে:'

প্রতিধ্বনি 'নাগরিকের নাম: $নাগরিক নাম ' ;

প্রতিধ্বনি 'নাগরিক আইডি: $নাগরিক ' ;

প্রতিধ্বনি 'স্থান: $স্থান ' ;

প্রতিধ্বনি 'বয়স: $বয়স ' ;

প্রতিধ্বনি 'পেশা: $পেশা ' ;

স্ক্রিপ্ট টার্মিনালে নিম্নলিখিত ফলাফল দেবে:

. /< লিপি > .শ -জে ড্যানি -k 476 -l টরন্টো -মি 25 -n লেখক

ব্যবহার [ইমেল সুরক্ষিত] Loops সঙ্গে

দ্য ' [ইমেল সুরক্ষিত] ” ভেরিয়েবল সব ইনপুট আর্গুমেন্টের অ্যারে ছাড়া আর কিছুই নয়। আমরা ব্যবহার করে যেকোন সংখ্যক ইনপুট পাস করতে পারি ' [ইমেল সুরক্ষিত] ' পরিবর্তনশীল। আপনি আর্গুমেন্টের মাধ্যমে পুনরাবৃত্তি করার জন্য এই ভেরিয়েবলটিকে লুপ হিসাবে ব্যবহার করতে পারেন। দ্য ' [ইমেল সুরক্ষিত] ' পরিবর্তনশীল তখন কাজে আসে; আপনি ইনপুট আকার জানেন না এবং অবস্থানগত আর্গুমেন্ট নিতে পারবেন না। অতএব, আপনি ব্যবহার করতে পারেন ' [ইমেল সুরক্ষিত] ”  বরং getopt ফাংশনটি বারবার সংজ্ঞায়িত করার চেয়ে। এখানে loops ব্যবহার করার একটি উদাহরণ এবং [ইমেল সুরক্ষিত] একসাথে একটি স্ক্রিপ্টে:

#!/bin/bash

একের উপর = ( '$ @ ' )



যদি [ $# -জিটি 1 ]

তারপর



যোগ করুন =$ ( ( ${সংখ্যা[0]} + ${সংখ্যা[1]} ) )

প্রতিধ্বনি 'সমস্ত সংখ্যার যোগ হল: $ যোগ করুন '



বিয়োগ =$ ( ( ${সংখ্যা[0]} - ${সংখ্যা[1]} - ${সংখ্যা[2]} ) )

প্রতিধ্বনি 'সংখ্যার বিয়োগ হল: $বিয়োগ '



গুণ =$ ( ( ${সংখ্যা[0]} * ${সংখ্যা[1]} * ${সংখ্যা[2]} ) )

প্রতিধ্বনি 'সংখ্যার গুন হল: $গুণ '



বিভাগ1 =$ ( ( ${সংখ্যা[0]} / ${সংখ্যা[1]} ) )

প্রতিধ্বনি 'বিভাগ ${সংখ্যা[0]} এবং ${সংখ্যা[1]} হল: $বিভাগ1 '



বিভাগ2 =$ ( ( ${সংখ্যা[1]} / ${সংখ্যা[2]} ) )

প্রতিধ্বনি 'এর বিভাগ ${সংখ্যা[1]} এবং ${সংখ্যা[2]} হল: $বিভাগ2 '



বিভাগ3 =$ ( ( ${সংখ্যা[0]} / ${সংখ্যা[2]} ) )

প্রতিধ্বনি 'এর বিভাগ ${সংখ্যা[0]} এবং ${সংখ্যা[2]} হল: $বিভাগ2 '



থাকা

উপরের স্ক্রিপ্ট কমান্ড-লাইন আর্গুমেন্টের উপর ভিত্তি করে বিভিন্ন পাটিগণিত গণনা করে। উদাহরণস্বরূপ, আমরা ইনপুট হিসাবে 50, 35, এবং 15 প্রবেশ করেছি:

পজিশনাল প্যারামিটার ব্যবহার করে

আপনি অবস্থানগত পরামিতিগুলি অ্যাক্সেস করতে পারেন কারণ তারা প্রথমে $1, তারপর $2 এবং আরও অনেক কিছু অ্যাক্সেস করে। উদাহরণস্বরূপ, আসুন একটি স্ক্রিপ্ট তৈরি করি যা প্রথম আর্গুমেন্ট হিসাবে একটি নাম এবং তারপরে দ্বিতীয় হিসাবে একটি শহর পড়ে। যাইহোক, আপনি যদি প্রথমে শহর এবং তারপরে নামটি পাস করেন তবে এটি নামটিকে শহর হিসাবে বিবেচনা করে এবং তদ্বিপরীত। এই ধারণাটি বোঝার জন্য আসুন নীচের স্ক্রিপ্টে আরও গভীরভাবে ডুব দেওয়া যাক:

#!/bin/bash

প্রতিধ্বনি 'এখানে প্রবেশ করা বিশদ আছে'

প্রতিধ্বনি 'নাম $1'

প্রতিধ্বনি 'শহর $2'

টার্মিনালে স্ক্রিপ্ট চালানোর সময় আপনাকে নাম এবং শহর যোগ করতে হবে:

মোড়ক উম্মচন

ব্যাশে কমান্ড লাইন আর্গুমেন্টগুলি পরিচালনা করার পদ্ধতিগুলি সম্পর্কে আপনার যা জানা দরকার তা এই। আমরা বিভিন্ন পদ্ধতির ব্যাখ্যা করেছি যা আপনি উপযুক্ত উদাহরণ দিয়ে চেষ্টা করতে পারেন। আপনি স্ক্রিপ্টে আর্গুমেন্ট যোগ করতে চাইলে বিভিন্ন কমান্ড আছে। তাই নিশ্চিত করুন যে আপনি তাদের সম্পর্কে আরও জানতে Linuxhint-এ যান।