এই সিরিজের প্রথম নিবন্ধে, আপনি আপনার প্রথম, খুব ছোট, এক-লাইন ব্যাশ স্ক্রিপ্ট তৈরি করেছেন এবং শেল স্ক্রিপ্ট তৈরি করার কারণগুলি অন্বেষণ করেছেন। দ্বিতীয় নিবন্ধে, আপনি একটি মোটামুটি সহজ টেমপ্লেট তৈরি করতে শুরু করেছেন যা অন্যান্য ব্যাশ প্রোগ্রামগুলির জন্য একটি সূচনা পয়েন্ট হতে পারে এবং এটি পরীক্ষা করা শুরু করেছে। তৃতীয় নিবন্ধে, আপনি একটি সাধারণ সাহায্য ফাংশন তৈরি এবং ব্যবহার করেছেন এবং ফাংশনগুলি ব্যবহার করা এবং -h-এর মতো কমান্ড-লাইন বিকল্পগুলি কীভাবে পরিচালনা করবেন সে সম্পর্কে শিখেছেন .
সিরিজের এই চতুর্থ এবং শেষ নিবন্ধটি ভেরিয়েবলের মধ্যে পড়ে এবং সেগুলিকে শুরু করার পাশাপাশি প্রোগ্রামটি সঠিক অবস্থার অধীনে চালানো নিশ্চিত করতে সহায়তা করার জন্য কীভাবে কিছুটা বিচক্ষণতা পরীক্ষা করা যায়। মনে রাখবেন, এই সিরিজের উদ্দেশ্য হল ওয়ার্কিং কোড তৈরি করা যা ভবিষ্যতে ব্যাশ প্রোগ্রামিং প্রকল্পগুলির জন্য একটি টেমপ্লেটের জন্য ব্যবহার করা হবে। ধারণাটি হল টেমপ্লেটে ইতিমধ্যে উপলব্ধ সাধারণ উপাদানগুলি রেখে নতুন প্রোগ্রামিং প্রকল্পগুলি শুরু করা সহজ করা৷
ভেরিয়েবল
ব্যাশ শেল, সমস্ত প্রোগ্রামিং ভাষার মতো, ভেরিয়েবলের সাথে মোকাবিলা করতে পারে। একটি ভেরিয়েবল হল একটি প্রতীকী নাম যা মেমরির একটি নির্দিষ্ট অবস্থানকে বোঝায় যা কিছু ধরণের মান ধারণ করে। একটি চলকের মান পরিবর্তনযোগ্য, অর্থাৎ, এটি পরিবর্তনশীল। আপনি যদি ভেরিয়েবল ব্যবহার করার সাথে পরিচিত না হন তবে আমার নিবন্ধটি পড়ুন বাশের সাথে কীভাবে প্রোগ্রাম করবেন:সিনট্যাক্স এবং টুলস আপনি আরও এগিয়ে যাওয়ার আগে।
সম্পন্ন? দারুণ! চলুন এখন ভেরিয়েবল ব্যবহার করার সময় কিছু ভালো অভ্যাস দেখি।
আমি সবসময় আমার স্ক্রিপ্টে ব্যবহৃত প্রতিটি ভেরিয়েবলের জন্য প্রাথমিক মান সেট করি। আপনি এটিকে আপনার টেমপ্লেট স্ক্রিপ্টে খুঁজে পেতে পারেন প্রক্রিয়াগুলির পরপরই মূল প্রোগ্রামের প্রথম অংশ হিসাবে, বিকল্পগুলি প্রক্রিয়া করার আগে। প্রতিটি ভেরিয়েবলকে একটি উপযুক্ত মান দিয়ে শুরু করা ত্রুটিগুলি প্রতিরোধ করতে পারে যা তুলনা বা গণিত ক্রিয়াকলাপের ক্ষেত্রে অপ্রচলিত ভেরিয়েবলের সাথে ঘটতে পারে। ভেরিয়েবলের এই তালিকাটি এক জায়গায় রাখলে আপনি স্ক্রিপ্টে থাকা সমস্ত ভেরিয়েবল এবং তাদের প্রাথমিক মানগুলি দেখতে পারবেন৷
আপনার ছোট স্ক্রিপ্টে শুধুমাত্র একটি পরিবর্তনশীল আছে, $option , যতদূর. দেখানো হিসাবে নিম্নলিখিত লাইন সন্নিবেশ দ্বারা এটি সেট করুন:
#################################### ###############################
###### ###################################### ################
# প্রধান প্রোগ্রাম ###################################### #########
########################## #######################################
# ভেরিয়েবল শুরু করুন
option=""
############################## #######################################
# ইনপুট প্রক্রিয়া করুন বিকল্প প্রয়োজন অনুযায়ী বিকল্প যোগ করুন। #
############################### ###############################সবকিছু যেমন উচিত তেমন কাজ করে এবং এই পরিবর্তনের ফলে কিছুই ভেঙে যায়নি তা নিশ্চিত করতে এটি পরীক্ষা করুন।
ধ্রুবক
ধ্রুবকগুলিও পরিবর্তনশীল - অন্তত তাদের হওয়া উচিত। হার্ড-কোডেড মানের পরিবর্তে কমান্ড-লাইন ইন্টারফেস (CLI) প্রোগ্রামে যেখানেই সম্ভব ভেরিয়েবল ব্যবহার করুন। এমনকি যদি আপনি মনে করেন যে আপনি একটি নির্দিষ্ট মান (যেমন একটি ডিরেক্টরির নাম, একটি ফাইলের নাম, বা একটি পাঠ্য স্ট্রিং) শুধুমাত্র একবার ব্যবহার করবেন, একটি ভেরিয়েবল তৈরি করুন এবং এটি ব্যবহার করুন যেখানে আপনি হার্ড-কোডেড নাম রেখেছেন৷
উদাহরণস্বরূপ, প্রোগ্রামের মূল অংশের অংশ হিসাবে মুদ্রিত বার্তাটি একটি স্ট্রিং আক্ষরিক, প্রতিধ্বনি "হ্যালো ওয়ার্ল্ড!" . একটি পরিবর্তনশীল যে পরিবর্তন. প্রথমে, ভেরিয়েবল প্রারম্ভিক বিভাগে নিম্নলিখিত বিবৃতি যোগ করুন:
Msg="Hello world!"
এবং এখন থেকে প্রোগ্রামের শেষ লাইন পরিবর্তন করুন:
echo "Hello world!"
প্রতি:
echo "$Msg"
ফলাফল পরীক্ষা করুন।
স্যানিটি চেক
স্যানিটি চেকগুলি হল কেবলমাত্র সেই শর্তগুলির জন্য পরীক্ষা যা প্রোগ্রামটি সঠিকভাবে কাজ করার জন্য সত্য হওয়া প্রয়োজন, যেমন:প্রোগ্রামটিকে অবশ্যই রুট ব্যবহারকারী হিসাবে চালাতে হবে, অথবা এটি অবশ্যই একটি নির্দিষ্ট ডিস্ট্রিবিউশন এবং সেই ডিস্ট্রো রিলিজে চালাতে হবে। root-এর জন্য একটি চেক যোগ করুন আপনার সাধারণ প্রোগ্রাম টেমপ্লেটে চলমান ব্যবহারকারী হিসাবে।
রুট ব্যবহারকারী প্রোগ্রামটি চালাচ্ছে তা পরীক্ষা করা সহজ কারণ একটি প্রোগ্রাম এটি চালুকারী ব্যবহারকারী হিসাবে চলে।
আইডি প্রোগ্রামটি যে সাংখ্যিক ব্যবহারকারী আইডি (UID) এর অধীনে চলছে তা নির্ধারণ করতে কমান্ড ব্যবহার করা যেতে পারে। এটি কোনো বিকল্প ছাড়াই ব্যবহার করা হলে এটি বিভিন্ন বিট তথ্য প্রদান করে:
[student@testvm1 ~]$ id
uid=1001(student) gid=1001(student) group=1001(student),5000(dev)-u ব্যবহার করে বিকল্পটি শুধুমাত্র ব্যবহারকারীর UID প্রদান করে, যা আপনার ব্যাশ প্রোগ্রামে সহজেই ব্যবহারযোগ্য:
[student@testvm1 ~]$ id -u
1001
[student@testvm1 ~]$প্রোগ্রামে নিম্নলিখিত ফাংশন যোগ করুন। আমি সাহায্য পদ্ধতির পরে এটি যোগ করেছি, তবে আপনি এটি পদ্ধতি বিভাগে যে কোনও জায়গায় রাখতে পারেন। যুক্তি হল যে যদি UID শূন্য না হয়, যা সর্বদা রুট ব্যবহারকারীর UID হয়, প্রোগ্রামটি প্রস্থান করে:
#################################### ######################################## রুট পরীক্ষা করুন। #
############################### ###############################
CheckRoot()
{
যদি [ `id -u` !=0 ]
তারপর
echo "ERROR:এই প্রোগ্রামটি চালানোর জন্য আপনাকে অবশ্যই রুট ব্যবহারকারী হতে হবে"
প্রস্থান করুন
fi
}এখন, CheckRoot-এ একটি কল যোগ করুন ভেরিয়েবলের সূচনার ঠিক আগে পদ্ধতি। এটি পরীক্ষা করুন, প্রথমে ছাত্র ব্যবহারকারী হিসাবে প্রোগ্রামটি চালান:
[student@testvm1 ~]$ ./hello
ত্রুটি:এই প্রোগ্রামটি চালানোর জন্য আপনাকে অবশ্যই রুট ব্যবহারকারী হতে হবে
[student@testvm1 ~]$তারপর রুট ব্যবহারকারী হিসাবে:
[root@testvm1 ছাত্র # ./হ্যালো
হ্যালো ওয়ার্ল্ড!
[root@testvm1 ছাত্র #আপনার সর্বদা এই বিশেষ স্যানিটি পরীক্ষার প্রয়োজন নাও হতে পারে, তাই CheckRoot-এ কলটি মন্তব্য করুন কিন্তু টেমপ্লেটে সব কোড জায়গায় রেখে দিন। এইভাবে, ভবিষ্যতের প্রোগ্রামে সেই কোডটি ব্যবহার করার জন্য আপনাকে যা করতে হবে তা হল কলটি আনকমেন্ট করা।
কোড
উপরে বর্ণিত পরিবর্তনগুলি করার পরে, আপনার কোডটি এইরকম হওয়া উচিত:
#!/usr/bin/bash
############################# #######################################
# স্ক্রিপ্ট টেমপ্লেট #
# #
# একটি নতুন প্রোগ্রামের শুরুতে এই টেমপ্লেটটি ব্যবহার করুন৷ এখানে স্ক্রিপ্টের একটি সংক্ষিপ্ত বিবরণ দিন। #
# #
# পরিবর্তনের ইতিহাস #
# পরিবর্তন করুন নতুন ব্যাশ শেল স্ক্রিপ্ট তৈরি করার জন্য এটি একটি টেমপ্লেট। #
# প্রয়োজনে নতুন ইতিহাস এন্ট্রি যোগ করুন। #
# #
# # # # # # # # # # # ######################################>#################################### ######################
######### ###################################### ########################
#কপিরাইট (সি) 2007, 2019 ডেভিড উভয়ই#
#লিনাক্সজেক [email protected]#<বিআর /># #
# এই প্রোগ্রামটি বিনামূল্যের সফটওয়্যার; আপনি এটি পুনরায় বিতরণ করতে পারেন এবং/অথবা সংশোধন করতে পারেন #
# এটি #
# ফ্রি সফটওয়্যার ফাউন্ডেশন দ্বারা প্রকাশিত GNU জেনারেল পাবলিক লাইসেন্সের শর্তাবলীর অধীনে; হয় লাইসেন্সের সংস্করণ 2, অথবা #
# (আপনার বিকল্পে) যেকোনো পরবর্তী সংস্করণ। #
# #
# এই প্রোগ্রামটি এই আশায় বিতরণ করা হয়েছে যে এটি কার্যকর হবে, #
# কিন্তু কোনো ওয়ারেন্টি ছাড়াই; এমনকি একটি বিশেষ উদ্দেশ্যের জন্য #
# ব্যবসায়িকতা বা উপযুক্ততার উহ্য ওয়ারেন্টি ছাড়া। আরো বিস্তারিত জানার জন্য #
# GNU জেনারেল পাবলিক লাইসেন্স দেখুন। #
# #
# এই প্রোগ্রামের সাথে আপনার GNU জেনারেল পাবলিক লাইসেন্সের একটি কপি পাওয়া উচিত ছিল; যদি না হয়, ফ্রি সফটওয়্যারে লিখুন #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# ###################################### #####################
############ ###################################### ########
############################ ######################################
###################################### #####################################
# সাহায্য ###################################### ###################
হেল্প()
{
# প্রদর্শন সহায়তা
প্রতিধ্বনি "এর বিবরণ যোগ করুন স্ক্রিপ্ট এখানে কাজ করে।"
echo
echo "সিনট্যাক্স:scriptTemplate [-g|h|v|V]"
echo "বিকল্প:"
echo "g GPL লাইসেন্স প্রিন্ট করুন বিজ্ঞপ্তি।"
প্রতিধ্বনি "h এই সহায়তাটি প্রিন্ট করুন।"
echo "v ভার্বোস মোড।"
echo "V সফ্টওয়্যার সংস্করণ মুদ্রণ করুন এবং প্রস্থান করুন।"
echo
}
#################################### #############################
# রুট জন্য পরীক্ষা করুন। #
############################### ###############################
CheckRoot()
{
# যদি আমরা রুট হিসেবে না চলছি তাহলে আমরা প্রোগ্রাম থেকে প্রস্থান করি
যদি [ `id -u` !=0 ]
তারপর
ইকো "ত্রুটি:এই প্রোগ্রামটি চালানোর জন্য আপনাকে অবশ্যই রুট ব্যবহারকারী হতে হবে "
প্রস্থান
fi
####################### ###################################### ####
############################# #################################
# প্রধান প্রোগ্রাম ###################################### ######################
######## ###################################### ###############
##################### ###################################### ##
# স্যানিটি চেক #
######################### ######################### #############
# আমরা কি রুট হিসাবে কাজ করছি?
# CheckRoot
# ইনিশিয়ালাইজ ভেরিয়েবল
option=""
Msg="Hello world!"
############################### ###########################################
# প্রক্রিয়া ইনপুট অপশন। প্রয়োজন অনুযায়ী বিকল্প যোগ করুন। #
############################### "" :h" বিকল্প; do
case $option in
h) # প্রদর্শন সহায়তা
"
প্রস্থান;;
esac
হয়েছে
echo "$Msg"একটি চূড়ান্ত অনুশীলন
আপনি সম্ভবত লক্ষ্য করেছেন যে আপনার কোডে সহায়তা ফাংশনটি এমন বৈশিষ্ট্যগুলিকে বোঝায় যা কোডে নেই৷ একটি চূড়ান্ত অনুশীলন হিসাবে, আপনার তৈরি কোড টেমপ্লেটে সেই ফাংশনগুলি কীভাবে যুক্ত করবেন তা বের করুন৷
সারাংশ
এই নিবন্ধে, আপনি আপনার প্রোগ্রামটি রুট হিসাবে চলছে কিনা তার জন্য একটি স্যানিটি পরীক্ষা করার জন্য কয়েকটি ফাংশন তৈরি করেছেন। আপনার প্রোগ্রামটি একটু বেশি জটিল হয়ে উঠছে, তাই পরীক্ষা আরও গুরুত্বপূর্ণ হয়ে উঠছে এবং সম্পূর্ণ হওয়ার জন্য আরও পরীক্ষামূলক পথের প্রয়োজন৷
এই সিরিজটি একটি খুব ন্যূনতম ব্যাশ প্রোগ্রাম এবং কীভাবে একটি সময়ে একটি স্ক্রিপ্ট তৈরি করতে হয় তা দেখেছে। ফলাফল হল একটি সাধারণ টেমপ্লেট যা অন্যান্য, আরও দরকারী ব্যাশ স্ক্রিপ্টগুলির জন্য শুরুর বিন্দু হতে পারে এবং এতে দরকারী উপাদান রয়েছে যা নতুন স্ক্রিপ্টগুলি শুরু করা সহজ করে তোলে৷
এখন পর্যন্ত, আপনি ধারণা পাবেন:সংকলিত প্রোগ্রামগুলি প্রয়োজনীয় এবং একটি খুব গুরুত্বপূর্ণ প্রয়োজন পূরণ করে। কিন্তু sysadmins জন্য, সবসময় একটি ভাল উপায় আছে. আপনার কাজের অটোমেশন চাহিদা মেটাতে সর্বদা শেল স্ক্রিপ্ট ব্যবহার করুন। শেল স্ক্রিপ্ট খোলা আছে; তাদের বিষয়বস্তু এবং উদ্দেশ্য জ্ঞাত। এগুলি বিভিন্ন প্রয়োজনীয়তা পূরণের জন্য সহজেই পরিবর্তন করা যেতে পারে। আমি আমার সিস্যাডমিন ভূমিকায় এমন কিছু খুঁজে পাইনি যা আমাকে শেল স্ক্রিপ্ট দিয়ে সম্পন্ন করা যায় না৷
এই সিরিজে আপনি এখন পর্যন্ত যা তৈরি করেছেন তা কেবল শুরু। আপনি যত বেশি ব্যাশ প্রোগ্রাম লিখবেন, আপনি কোডের আরও বিট পাবেন যা আপনি ঘন ঘন ব্যবহার করেন এবং আপনার প্রোগ্রাম টেমপ্লেটে অন্তর্ভুক্ত করা উচিত।
সম্পদ
- ব্যাশের সাথে কীভাবে প্রোগ্রাম করবেন:সিনট্যাক্স এবং টুলস
- ব্যাশের সাথে কীভাবে প্রোগ্রাম করবেন:লজিক্যাল অপারেটর এবং শেল সম্প্রসারণ
- ব্যাশের সাথে কীভাবে প্রোগ্রাম করবেন:লুপস
প্রবন্ধগুলির এই সিরিজটি আংশিকভাবে ডেভিড বোথের তিন-অংশের লিনাক্স স্ব-অধ্যয়ন কোর্সের ভলিউম 2, অধ্যায় 10-এর উপর ভিত্তি করে তৈরি করা হয়েছে, লিনাক্স ব্যবহার এবং পরিচালনা করা—জিরো থেকে সিসঅ্যাডমিন।