নতুনদের জন্য বাশ স্ক্রিপ্টিং টিউটোরিয়াল

Bash Scripting Tutorial



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

বিষয়বস্তু:

  1. মন্তব্য
  2. ইকো কমান্ড
  3. পরিবর্তনশীল
  4. শর্তসাপেক্ষ বক্তব্য
  5. লুপ
  6. কার্যাবলী
  7. স্ক্রিপ্টে প্রোগ্রামগুলি কল করা
  8. মেনু তৈরি করা
  9. কমান্ড লাইন প্রসেসিং
  10. গাণিতিক
  11. স্ট্রিং ম্যানিপুলেশন
  12. একটি স্ক্রিপ্ট থেকে রিটার্ন কোড ফিরিয়ে অন্য স্ক্রিপ্টে ধরা
  13. ফাইল পড়া এবং লেখা
  14. পাইপ

মন্তব্য

কোডের সাথে মন্তব্য যোগ করা যে কোন প্রোগ্রামিং ভাষার একটি অপরিহার্য অংশ। কার্যকর করার সময় মন্তব্যগুলি স্ক্রিপ্টের সাথে বিশ্লেষণ করা হয় না। কোডটি ভালোভাবে মন্তব্য করলে পাঠক যেকোনো কোড সঠিকভাবে বুঝতে পারে। আপনি ব্যাশ স্ক্রিপ্টে একাধিক উপায়ে একটি মন্তব্য যুক্ত করতে পারেন। ব্যাশ স্ক্রিপ্টে আপনি কীভাবে একক-লাইন এবং একাধিক-লাইনের মন্তব্য যুক্ত করতে পারেন তা এই অংশে দেখানো হয়েছে। ব্যাশ মন্তব্যের ব্যবহার জানতে নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন। এখানে, '#' চিহ্নটি একক লাইনের মন্তব্য যোগ করার জন্য ব্যবহার করা হয় এবং ':' এর সাথে একক উদ্ধৃতি (') একাধিক লাইনের মন্তব্য যোগ করার জন্য ব্যবহৃত হয়।







bash_comment.sh



#!/বিন/ব্যাশ
#ইনপুট হিসাবে একটি নম্বর নিন
বের করে দিল 'একটি নম্বর লিখুন'
পড়ুনপ্রতি
:'
ইনপুট নম্বরটি পরীক্ষা করুন
10 এর কম বা 10 এর চেয়ে বড় বা 10 এর সমান
'

যদি [[ $ ক -ল্ট 10 ]]
তারপর
বের করে দিল 'সংখ্যাটি 10 ​​এর কম'
এলিফ [[ $ ক -জিটি 10 ]]
তারপর
বের করে দিল 'সংখ্যাটি 10 ​​এর চেয়ে বড়'
অন্য
বের করে দিল 'সংখ্যাটি 10 ​​এর সমান'
থাকা

আউটপুট:



স্ক্রিপ্ট চালান।





$বাশbash_comment.sh

এখানে, স্ক্রিপ্টটি তিনবার ইনপুট মান 3, 10 এবং 90 দিয়ে কার্যকর করা হয়। নিম্নলিখিত আউটপুটটি প্রদর্শিত হবে।



যদি আপনি ব্যাশ মন্তব্য সম্পর্কে আরও জানতে চান তবে আপনি চেক করতে পারেন এই টিউটোরিয়াল

উপরে যান

echo কমান্ড

টার্মিনালে আউটপুট প্রিন্ট করতে ব্যাশে 'ইকো' কমান্ড ব্যবহার করা হয়। বিভিন্ন উপায়ে আউটপুট প্রিন্ট করার জন্য ব্যাশে ইকো কমান্ড দিয়ে বিভিন্ন অপশন ব্যবহার করা যেতে পারে। `Echo` কমান্ডের দুটি সহজ ব্যবহার জানতে নিম্নলিখিত স্ক্রিপ্ট দিয়ে একটি ব্যাশ ফাইল তৈরি করুন। এখানে, প্রথম `ইকো` কমান্ডটি একটি নতুন লাইন দিয়ে একটি সাধারণ পাঠ্য ডেটা প্রিন্ট করবে এবং দ্বিতীয় ইকো কমান্ডটি একটি নতুন লাইন ছাড়াই একটি সাধারণ পাঠ্য মুদ্রণ করবে।

echo_test.sh

#!/বিন/ব্যাশ
#প্রথম লেখা মুদ্রণ করুন
বের করে দিল 'একটি নতুন লাইন দিয়ে টেক্সট প্রিন্ট করুন'
#দ্বিতীয় লেখাটি প্রিন্ট করুন
বের করে দিল -এন 'নতুন লাইন ছাড়াই টেক্সট প্রিন্ট করুন'

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশecho_test.sh

উপরের কমান্ডটি চালানোর পরে নিম্নলিখিত আউটপুটটি উপস্থিত হবে।

ব্যাশে `ইকো` কমান্ডের আরও অনেক ব্যবহার আছে। `Echo` কমান্ড সম্পর্কে আরও জানতে আপনি এই টিউটোরিয়ালটি দেখতে পারেন।

উপরে যান

পরিবর্তনশীল

ভেরিয়েবল ডিক্লারেশন যেকোনো প্রোগ্রামিং ভাষার একটি প্রয়োজনীয় অংশ। ব্যাশ ভেরিয়েবল বিভিন্ন উপায়ে ঘোষণা করা যেতে পারে। যখন একটি ভেরিয়েবলে একটি মান বরাদ্দ করা হয় তখন ভেরিয়েবলের শুরুতে কোন প্রতীক ব্যবহার করা হয় না। ভেরিয়েবলের মান পড়ার সময় পরিবর্তনশীল নামের সাথে '$' চিহ্ন ব্যবহার করা হয়। ভেরিয়েবল টার্মিনাল থেকে ব্যবহার করা যেতে পারে বা যেকোন ব্যাশ স্ক্রিপ্টে ব্যবহার করা যেতে পারে।

নিম্নলিখিত কমান্ডগুলি একটি স্ট্রিং ভেরিয়েবল নামে ঘোষণা করবে মিস্টার একটি নির্দিষ্ট মান এবং পরবর্তী টার্মিনালে ভেরিয়েবলের মান মুদ্রণ করুন।

$মিস্টার='আমি বাশ প্রোগ্রামিং পছন্দ করি'
$বের করে দিল $ mystr

আউটপুট:

নিম্নলিখিত স্ক্রিপ্ট দিয়ে একটি ব্যাশ ফাইল তৈরি করুন। এখানে দুটি ভেরিয়েবল ঘোষণা করা হয়েছে। এইগুলো $ ক এবং $ খ । যদি ইনপুট মান যা সংরক্ষণ করা হয় $ ক সমান $ খ তারপর বার্তা, সংখ্যা সমান অন্যথায় ছাপা হবে সংখ্যা সমান নয় মুদ্রিত হবে।

var.sh

#!/বিন/ব্যাশ
বের করে দিল 'একটি নম্বর লিখুন'
পড়ুনপ্রতি
=100
যদি [[ $ ক -ইক $ খ ]]
তারপর
বের করে দিল 'সংখ্যা সমান'
অন্য
বের করে দিল 'সংখ্যা সমান নয়'
থাকা

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশvar.sh

উপরের কমান্ডটি 56 এবং 100 মানের সাথে দুইবার কার্যকর করা হয়। নিম্নলিখিত আউটপুটটি প্রদর্শিত হবে।

আপনি যদি bash ভেরিয়েবল সম্পর্কে আরো জানতে চান তাহলে চেক করতে পারেন এই টিউটোরিয়াল

উপরে যান

শর্তসাপেক্ষ বক্তব্য

অন্য প্রোগ্রামিং ভাষার মতো, আপনি ব্যাশে শর্তাধীন বিবৃতি ব্যবহার করতে পারেন। ' If-then-else ' এবং ' কেস 'বিবৃতি প্রধানত কোন প্রোগ্রামিং ভাষায় শর্ত বিবৃতি বাস্তবায়নের জন্য ব্যবহৃত হয়। ব্যবহার করে শর্তসাপেক্ষ বিবৃতি ব্যবহার 'যদি' বিবৃতিটি এই টিউটোরিয়ালের এই বিভাগে দেখানো হয়েছে। নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন যেখানে শর্তাধীন বিবৃতি ব্যবহৃত হয়। এখানে, ব্যবহারকারীর কাছ থেকে দুটি মান ইনপুট হিসাবে নেওয়া হবে এবং ভেরিয়েবলে সংরক্ষণ করা হবে, $ কোড , এবং $ বয়স । 'If' স্টেটমেন্ট এর মান পরীক্ষা করতে ব্যবহৃত হয় $ বয়স এর চেয়ে বড় বা সমান 18 এবং এর মান $ কোড হয় 1100 । যদি উভয় শর্ত সত্য হয় তবে বার্তা, আপনি সিনেমাটি দেখার যোগ্য অন্যথায় ছাপা হবে আপনি সিনেমাটি দেখার যোগ্য নন মুদ্রিত হবে।

cond.sh

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

বের করে দিল 'আপনার কোড লিখুন'
পড়ুনকোড
বের করে দিল 'আপনার বয়স প্রবেশ'
পড়ুনবয়স

যদি [[ $ বয়স -দাও 18 && $ কোড -ইক '1100' ]]
তারপর
বের করে দিল 'আপনি সিনেমা দেখার যোগ্য'
অন্য
বের করে দিল 'আপনি সিনেমা দেখার যোগ্য নন'
থাকা

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশcond.sh

বিভিন্ন ইনপুট মান নেওয়ার পরে নিম্নলিখিত আউটপুট প্রদর্শিত হবে। 1100 একটি কোড হিসাবে দেওয়া হয় এবং 5 প্রথম এক্সিকিউশনের জন্য বয়স হিসাবে দেওয়া হয় এবং যদি এই মানগুলির জন্য শর্তটি মিথ্যা হয়। 1100 একটি কোড হিসাবে দেওয়া হয় এবং 45 দ্বিতীয় বয়সের জন্য বয়স হিসাবে দেওয়া হয় যা যদি শর্তের জন্য সত্য হয়।

আপনি যদি বাশ শর্তাধীন বিবৃতি সম্পর্কে আরও জানতে চান তবে আপনি এই টিউটোরিয়ালটি দেখতে পারেন।

উপরে যান

লুপ

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

লুপের জন্য ব্যবহার করা হচ্ছে

নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন যেখানে ` জন্য ' পুনরাবৃত্তির জন্য লুপ ব্যবহার করা হয়। `জন্য` লুপ প্রধানত ডেটার একটি তালিকা বা একটি অ্যারের পুনরাবৃত্তির জন্য ব্যবহৃত হয়। এখানে, সপ্তাহের দিনের নামের একটি তালিকা ব্যবহার করা হয় এবং প্রতিটি সপ্তাহের দিনের নাম লুপ ব্যবহার করে পুনরাবৃত্তি করা হয়। `যদি` বিবৃতি সপ্তাহের দিনের উপর ভিত্তি করে একটি নির্দিষ্ট বার্তা মুদ্রণ করতে ব্যবহৃত হয়।

for.sh

#লুপের প্রতিটি পুনরাবৃত্তিতে সপ্তাহের দিনের নাম পড়ুন
জন্যদিনভিতরেসোমবার মঙ্গলবার বুধবার বৃহস্পতিবার শুক্রবার শনিবার রবিবার
কর

#সপ্তাহের দিনের নাম সোমবার বা বৃহস্পতিবার চেক করুন
যদি [[ $ দিন=='সোমবার' || $ দিন=='বৃহস্পতিবার' ]]
তারপর
বের করে দিল 'মিটিং চলছে$ দিনসকাল সাড়ে at টায় '

#সপ্তাহের দিনের নামটি মঙ্গলবার বা বুধবার বা শুক্রবার দেখুন
এলিফ [[ $ দিন=='মঙ্গলবার' || $ দিন=='বুধবার' || $ দিন=='শুক্রবার' ]]
তারপর
বের করে দিল 'প্রশিক্ষণ চলছে$ দিনসকাল ১১ টায় '
অন্য

#অন্যান্য দিনের জন্য 'ছুটি' মুদ্রণ করুন
বের করে দিল '$ দিনহলিডে '
থাকা
সম্পন্ন

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশfor.sh

স্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।

আপনি যদি লুপের জন্য ব্যাশের আরও ব্যবহার জানতে চান তবে আপনি এই টিউটোরিয়ালটি দেখতে পারেন।

While loop ব্যবহার করে

নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন যেখানে ` যখন ` পুনরাবৃত্তির জন্য লুপ ব্যবহার করা হয়। এই স্ক্রিপ্ট সেই সংখ্যাগুলিকে 1 থেকে 20 পর্যন্ত মুদ্রণ করবে যা সমান এবং 5 দ্বারা বিভাজ্য। এখানে, $ পাল্টা পরিবর্তনশীলটি লুপের পুনরাবৃত্তি নিয়ন্ত্রণ করতে ব্যবহৃত হয় এবং এই পরিবর্তনশীলটির মান প্রতিটি পুনরাবৃত্তিতে 1 দ্বারা বৃদ্ধি করা হয়। কখন `যদি` শর্ত সত্য হবে তারপর এটি এর মান মুদ্রণ করবে $ পাল্টা

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

#বার্তাটি মুদ্রণ করুন
বের করে দিল 'এমন সংখ্যাগুলি মুদ্রণ করুন যা সমান এবং 5 দ্বারা বিভাজ্য'

#কাউন্টার শুরু করুন
পাল্টা=

#কাউন্টার মূল্য 20 এর চেয়ে কম বা সমান না হওয়া পর্যন্ত লুপটি পড়ুন
যখন [ $ পাল্টা -দ্য বিশ ]
কর

#কাউন্টারটি 2 এবং 5 দ্বারা বিভাজ্য দেখুন
যদি [[ $ পাল্টা%2-ইক 0 && $ পাল্টা%5-ইক 0 ]]
তারপর
#নতুন লাইন ছাড়াই $ কাউন্টার প্রিন্ট করুন
বের করে দিল '$ পাল্টা'
থাকা

#ইনক্রিমেন্ট $ কাউন্টার 1 দ্বারা
((পাল্টা ++))
সম্পন্ন
বের করে দিল 'সম্পন্ন'

আউটপুট:

$বাশwhile.sh

শুধুমাত্র 1-20 এর মধ্যে সংখ্যা আছে যা 5 দ্বারা বিভক্ত এবং বিভাজ্য।

আপনি যদি ব্যাশ এর আরো ব্যবহার জানতে চান যখন ' লুপ তারপর আপনি চেক করতে পারেন এই টিউটোরিয়াল

লুপ পর্যন্ত ব্যবহার করা

নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন যেখানে ` পর্যন্ত ' পুনরাবৃত্তির জন্য লুপ ব্যবহার করা হয়। এই স্ক্রিপ্ট 0 থেকে 20 পর্যন্ত সমস্ত বিজোড় সংখ্যা মুদ্রণ করবে। $ n লুপটি পুনরাবৃত্তি করতে এই স্ক্রিপ্টে ভেরিয়েবল ব্যবহার করা হয়।

sh

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

#পরিবর্তনশীল শুরু করুন, n
n=বিশ

#N এর মান 0 এর বেশি না হওয়া পর্যন্ত লুপটি পুনরাবৃত্তি করুন
পর্যন্ত [ $ n -ল্ট 0 ]
কর

#চেক করুন n এর মানটি বিজোড়
যদি [[ $ n%2-জিটি 0 ]]
তারপর
বের করে দিল $ n
থাকা

#1 দ্বারা n এর মান বৃদ্ধি করুন
((n=$ n-))
সম্পন্ন

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশsh

স্ক্রিপ্টটি 20 থেকে 1 পর্যন্ত সমস্ত জোড় সংখ্যা মুদ্রণ করবে।

উপরে যান

কার্যাবলী

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

ব্যাশ স্ক্রিপ্টে কিভাবে ফাংশন ঘোষণা করা যায় এবং বলা যায় তা জানতে নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন। স্ক্রিপ্টে তিনটি ফাংশন ঘোষণা করা হয়েছে। একটি সাধারণ বার্তা প্রিন্ট করার জন্য প্রথম ফাংশন ঘোষণা করা হয়, নতুনদের জন্য ব্যাশ প্রোগ্রামিং । দ্বিতীয় ফাংশন একটি পরিবর্তনশীল একটি স্ট্রিং মান বরাদ্দ ঘোষণা করা হয়, $ return_str যা ছাপবে, LinuxHint দিয়ে ব্যাশ প্রোগ্রামিং শিখুন ফাংশন কল করার পরে। তৃতীয় ফাংশনটি একটি আর্গুমেন্ট মানকে বৃত্ত ব্যাসার্ধ হিসাবে পড়ার জন্য ঘোষণা করা হয়েছে যা ফাংশন কল করার সময় প্রদান করা হবে। এখানে, স্থানীয় যুক্তি মান পড়ার জন্য ব্যবহৃত হয়। এই ফাংশনটি সূত্র ব্যবহার করে ব্যাসার্ধ মানের উপর ভিত্তি করে বৃত্তের ক্ষেত্রফল গণনা করবে, πr2 এবং গণনা করা এলাকার মান মুদ্রণ করুন।

func.sh

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

#একটি সাধারণ ফাংশন ঘোষণা করুন
ফাংশনprint_message()
{
বের করে দিল 'নতুনদের জন্য ব্যাশ প্রোগ্রামিং'
}

#একটি স্ট্রিং মান ফেরত একটি ফাংশন ঘোষণা
ফাংশনret_strdata()
{
#স্ট্রিং মান সহ ভেরিয়েবল শুরু করুন
return_str=লিনাক্সহিন্ট দিয়ে ব্যাশ প্রোগ্রামিং শিখুন '
}

#যুক্তি মান পড়ার জন্য একটি ফাংশন ঘোষণা করুন
ফাংশনহিসাব_আরিয়া()

#পাস করা আর্গুমেন্ট মান পড়ুন
স্থানীয় ব্যাসার্ধ=$ 1
এলাকা= $(বের করে দিল $ ব্যাসার্ধ*$ ব্যাসার্ধ*3.14

#একটি সাধারণ বার্তা প্রিন্ট করতে ফাংশনটি কল করুন
print_message

#ফাংশনটি কল করুন যা একটি ভেরিয়েবলে একটি স্ট্রিং মান নির্ধারণ করবে
ret_strdata

#ভেরিয়েবলের মান প্রিন্ট করুন
বের করে দিল $ return_str

#ব্যাসার্ধের মান পড়ুন
বের করে দিল 'ব্যাসার্ধ মান লিখুন'
পড়ুনকাজ

#ব্যাসার্ধ মান সহ ফাংশনটি কল করুন
হিসাব_আরিয়া$ rad

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশfunc.sh

স্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে। প্রথম দুটি লাইন ফাংশন কল করে মুদ্রণ করবে, print_message () এবং ret_strdata () । ফাংশন কল করে শেষ লাইনটি মুদ্রণ করবে, হিসাব_আরিয়া () নেওয়া ইনপুট ব্যাসার্ধ মান সহ।

আপনি যদি ব্যাশ ফাংশন থেকে একটি স্ট্রিং ফেরত সম্পর্কে জানতে চান তাহলে আপনি করতে পারেন এই টিউটরিয়া দ্য.

উপরে যান

স্ক্রিপ্টে প্রোগ্রামগুলি কল করা

আপনি যেকোনো ব্যাশ স্ক্রিপ্টে অন্যান্য প্রোগ্রামকে কল করার জন্য অনেক ধরনের কমান্ড ব্যবহার করতে পারেন, যেমন উৎস, bash, eval, এক্সিকিউট , ইত্যাদি ধরুন তিনটি ব্যাশ ফাইল, add.sh , subtract.sh, multiply.sh এবং division.sh যোগ, বিয়োগ, গুণ এবং ভাগ করার জন্য তৈরি। এখানে, বিয়োগ করুন এবং বিভাগ কমান্ড লাইন আর্গুমেন্ট পড়ুন। এই চারটি ফাইলের স্ক্রিপ্ট নিচে দেওয়া হল।

add.sh

#!/বিন/ব্যাশ
প্রতি=60
=40
((ফলাফল=$ ক+$ খ))
বের করে দিল 'যোগে$ ক+$ খ=$ ফলাফল'

subract.sh

#!/বিন/ব্যাশ
প্রতি=$ 1
=$ 2
((ফলাফল=$ ক-$ খ))
বের করে দিল 'এর বিয়োগ$ ক-$ খ=$ ফলাফল'

multiply.sh

#!/বিন/ব্যাশ
((ফলাফল=$ 1*$ 2))
বের করে দিল $ 1 এবং $ 2 এর গুণন হল$ ফলাফল'

div.sh

#!/বিন/ব্যাশ
প্রতি=$ 1
=2
((ফলাফল=$ ক/$ খ))
বের করে দিল 'এর বিভাজন$ কদ্বারা$ খহয়$ ফলাফল'

নামে একটি ব্যাশ ফাইল তৈরি করুন, callpro.sh উৎস, ব্যাশ, eval এবং exec কমান্ড ব্যবহার করে উল্লিখিত ব্যাশ ফাইলগুলিকে কল করার জন্য নিম্নলিখিত স্ক্রিপ্টের সাথে। নিম্নলিখিত স্ক্রিপ্টটি চালানোর আগে আপনাকে অবশ্যই উপরের চারটি ফাইলের জন্য এক্সিকিউশন পারমিশন সেট করতে হবে। `উৎস` কমান্ড কল করার জন্য ব্যবহৃত হয় add.sh ফাইল `bash` কমান্ডটি subtract.sh ফাইল চালানোর জন্য ব্যবহৃত হয়। `eval` কমান্ডটি multiply.sh ফাইল চালানোর জন্য ব্যবহৃত হয়। `Eval` কমান্ডের জন্য দুটি ইনপুট মান কমান্ড লাইন আর্গুমেন্ট হিসাবে পাঠানো হয়। শেষ কমান্ড হল exec কমান্ড যা শুধুমাত্র পরম পথ দিয়ে কাজ করে। এর জন্য, script.sh ফাইলের পুরো পথের নাম স্ক্রিপ্টে দেওয়া আছে।

callpro.sh

#!/বিন/ব্যাশ
স্ক্রিপ্ট 1='add.sh'
স্ক্রিপ্ট 2='বিয়োগ.শ'
স্ক্রিপ্ট 3='multiply.sh'
স্ক্রিপ্ট 4='/home/fahmida/code/divide.sh'

সূত্র '$ স্ক্রিপ্ট 1'

বাশ $ script2 পঞ্চাশ বিশ

বের করে দিল 'A এর মান লিখুন'
পড়ুনপ্রতি
বের করে দিল 'B এর মান লিখুন'
পড়ুন
eval বাশ $ স্ক্রিপ্ট 3 $ ক $ খ
এক্সিকিউট $ script4 30

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশcallpro.sh

স্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।

উপরে যান

মেনু তৈরি করা

একটি সহজ মেনু তৈরি করার জন্য bash এ একটি দরকারী কমান্ড আছে যাকে বলা হয় 'নির্বাচন করুন' কমান্ড এই কমান্ড ব্যবহার করে বিভিন্ন ধরনের মেনু তৈরি করা যায়। এই কমান্ড দ্বারা একটি মেনু তৈরির জন্য একটি নির্দিষ্ট তথ্য তালিকা ব্যবহার করা হয়। এর ব্যবহার দেখতে নিম্নলিখিত কোড সহ একটি ব্যাশ ফাইল তৈরি করুন 'নির্বাচন করুন' একটি মেনু তৈরির জন্য কমান্ড। এই উদাহরণে, পাঁচটি আইটেমের তালিকা একটি মেনু হিসাবে মুদ্রিত হবে এবং ব্যবহারকারীকে তালিকা থেকে যে কোন ভাষা বেছে নিতে অনুরোধ করবে। নির্বাচিত মান ভেরিয়েবলে সংরক্ষণ করা হবে, $ ভাষা যা পরবর্তীতে অন্যান্য স্ট্রিং এর সাথে সংযুক্ত করে মুদ্রিত হয়। ব্যবহারকারী প্রেস না করা পর্যন্ত স্ক্রিপ্টটি ক্রমাগত ভাষা নির্বাচন করতে বলবে 6 স্ক্রিপ্ট থেকে শেষ করা।

menu.sh

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

#ব্যবহারকারীর জন্য বার্তা মুদ্রণ করুন
বের করে দিল 'আপনার প্রিয় ভাষা নির্বাচন করুন'

# একটি মেনু আইটেমের তালিকা নির্ধারণ করুন
নির্বাচন করুনভাষাভিতরে# জাভা পিএইচপি পাইথন ব্যাশ প্রস্থান
কর
#নির্বাচিত মান মুদ্রণ করুন
যদি [[ $ ভাষা=='প্রস্থান' ]]
তারপর
প্রস্থান 0
অন্য
বের করে দিল 'নির্বাচিত ভাষা হল$ ভাষা'
থাকা
সম্পন্ন

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশmenu.sh

নিম্নলিখিত আউটপুট অনুসারে, ব্যবহারকারী প্রথমবার পিএইচপি মুদ্রণ করার জন্য 3 টি চাপিয়েছিলেন এবং দ্বিতীয়বার 6 টি চাপ দিয়েছিলেন যা স্ক্রিপ্ট থেকে বন্ধ হয়ে গিয়েছিল।

আপনি যদি 'সিলেক্ট' দিয়ে ব্যাশ মেনু তৈরির বিষয়ে আরও জানতে চান তাহলে আপনি এই টিউটোরিয়ালটি দেখতে পারেন।

উপরে যান

কমান্ড লাইন প্রসেসিং

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

কমান্ড লাইন আর্গুমেন্ট ভ্যালু পড়ার ব্যবহার দেখতে নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন। এই স্ক্রিপ্ট তিনটি কমান্ড লাইন আর্গুমেন্ট পড়বে যা ভেরিয়েবল, $ operand1, $ operand2 এবং $ operator- এ সংরক্ষিত থাকবে। স্ক্রিপ্টটি সঠিকভাবে চালানোর জন্য, প্রথম এবং তৃতীয় যুক্তির মান সংখ্যা হতে হবে এবং দ্বিতীয় যুক্তির মান চারটি গাণিতিক অপারেটর ('+', '-', '/', 'x') যে কোন একটি হতে হবে। যদি বিবৃতি $ operator এর মান পরীক্ষা করবে এবং অপারেটরের উপর ভিত্তি করে অপারেশন করবে এবং মানটি মুদ্রণ করবে।

cl1.sh

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

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

# যুক্তি মান সংরক্ষণ করুন
অপারেন্ড 1=$ 1
অপারেন্ড 2=$ 3
অপারেটর=$ 2

#গাণিতিক ক্রিয়াকলাপ করতে দ্বিতীয় কমান্ড আর্গুমেন্ট মানটি পরীক্ষা করুন
যদি [[ $ অপারেটর=='+' ]]
তারপর
((ফলাফল=$ operand1+$ operand2))
এলিফ [[ $ অপারেটর=='-' ]]
তারপর
((ফলাফল=$ operand1-$ operand2))
এলিফ [[ $ অপারেটর=='এক্স' ]]
তারপর
((ফলাফল=$ operand1*$ operand2))
এলিফ [[ $ অপারেটর=='/' ]]
তারপর

((ফলাফল=$ operand1/$ operand2))
থাকা

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

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশcl1.sh

চার ধরনের গাণিতিক অপারেটরের জন্য স্ক্রিপ্টটি চারবার কার্যকর করা হয়। আর্গুমেন্ট মানগুলির জন্য নিম্নলিখিত আউটপুট প্রদর্শিত হবে, 6 + 3, 6 - 3, 6 x 3 এবং 6/3

ব্যাগে নাম-মান জোড়া দিয়ে আর্গুমেন্ট মান পাস করা যায়। নামের সাথে যুক্তির মান কীভাবে পড়তে হয় তা দেখানোর জন্য নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন। স্ক্রিপ্ট দুটি আর্গুমেন্ট ভেরিয়েবল পড়বে। নামের সাথে যুক্তির মানগুলি স্ক্রিপ্টের প্রথম বিবৃতিতে মুদ্রিত হয়। এরপরে, কমান্ড লাইন আর্গুমেন্ট মান ধারণকারী অ্যারের পুনরাবৃত্তি করতে একটি লুপ ব্যবহার করা হয়। অ্যারের প্রতিটি উপাদানকে 'কাট' কমান্ড ব্যবহার করে একটি কী-মান জোড়ায় বিভক্ত করা হয়। পরবর্তী, কেস স্টেটমেন্ট কী মূল্যের উপর ভিত্তি করে একটি বিশেষ বার্তা প্রিন্ট করতে ব্যবহৃত হয়।

cl2.sh

। #! /আমি/বাশ

#আর্গুমেন্ট ভেরিয়েবল প্রিন্ট করুন
বের করে দিল 'আর্গুমেন্ট মান হল: $ 1 $ 2'

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

#আলাদা যুক্তির নাম এবং মান
চাবি= $(বের করে দিল $ আর্গ | কাটা -এফ 1 -ডি=)
মান= $(বের করে দিল $ আর্গ | কাটা -ফ 2 -ডি=)

#যুক্তির নামের উপর ভিত্তি করে বার্তা মুদ্রণ করুন
কেস $ কী ভিতরে
নাম) বের করে দিল 'ছাত্রের নাম =$ মান';;
চিহ্ন) বের করে দিল 'প্রাপ্ত চিহ্ন =$ মান' ;;
*)
esac
সম্পন্ন

আউটপুট:

নিম্নলিখিত কমান্ড লাইন যুক্তি দিয়ে স্ক্রিপ্ট চালান।

$বাশcl2.shনাম= আবির হোসেনচিহ্ন=.০

উপরের কমান্ডগুলিতে দুটি কমান্ড লাইন আর্গুমেন্ট দেওয়া হয়েছে। এইগুলো নাম = আবির হোসেন এবং চিহ্ন = 90নাম এবং চিহ্ন স্ক্রিপ্ট দ্বারা আলাদা করা হয় এবং আউটপুট ফরম্যাট করার পর দুটি মান মুদ্রিত হয়।

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

উপরে যান

গাণিতিক

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

arith.sh

#!/বিন/ব্যাশ
# যোগফল গণনা করুন
ফলাফল= $((পঞ্চাশ+25))
# প্রিন্ট সমষ্টি মান
বের করে দিল 'যোগফল =$ ফলাফল'

# বিভাগ গণনা করুন
ফলাফল= $((পঞ্চাশ/25))
# প্রিন্ট ডিভিশন মান
বের করে দিল 'বিভাগ =$ ফলাফল'

# N কে একটি মান নির্ধারণ করুন
এন=10
# প্রি-ইনক্রিমেন্ট করা
((-এন))
# N এর মান প্রিন্ট করুন
বের করে দিল 'হ্রাসের পরে মান =$ N'

# শর্টহ্যান্ড অপারেটর ব্যবহার করা
((N +=10 ))
# N এর মান প্রিন্ট করুন
বের করে দিল 10 যোগ করার পর মান =$ N'

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশarith.sh

স্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।

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

উপরে যান

স্ট্রিং ম্যানিপুলেশন

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

সংযোজিত স্ট্রিং

দুই বা ততোধিক স্ট্রিং একসাথে যোগ করাকে স্ট্রিং সংযোজন বলে। একের পর এক স্থাপন করে স্ট্রিংটি ব্যাশে একত্রিত হয়। স্ট্রিং সংযোজনের ব্যবহার দেখানোর জন্য নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন। দুটি স্ট্রিং ভেরিয়েবল শুরু করা হয় এবং ভেরিয়েবলগুলিকে একত্রিত করার পরে মুদ্রণ করা হয়। এখানে, এর বিষয়বস্তু $ string1 এবং $ string2 একত্রিত এবং মুদ্রিত হবে।

concat.sh

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

#প্রথম স্ট্রিং ভেরিয়েবল শুরু করুন
স্ট্রিং 1='আমি পছন্দ করি '
#দ্বিতীয় স্ট্রিং ভেরিয়েবল শুরু করুন
স্ট্রিং 2='ব্যাশ প্রোগ্রামিং'
#উভয় স্ট্রিং একত্রিত করার পরে মুদ্রণ করুন
বের করে দিল '$ string1$ string2'

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশconcat.sh

স্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।

আপনি এই টিউটোরিয়াল থেকে স্ট্রিং সংযোজন সম্পর্কে আরও জানতে পারেন।

উপরে যান

স্ট্রিং তুলনা

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

তুলনা করুন

#!/বিন/ব্যাশ
বের করে দিলকোন স্ট্রিং মান লিখুন
পড়ুনপাঠ্য

#ইনপুট ডেটা পাইথনের সমতুল্য দেখুন
যদি [ $ টেক্সট=='পাইথন' ];তারপর
বের করে দিল 'তুমি পাইথন পছন্দ কর।'
অন্য
বের করে দিল 'আপনি পার্ল পছন্দ করেন'
থাকা

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশতুলনা করুন

স্ক্রিপ্টটি চালানোর পরে নিম্নলিখিত আউটপুট প্রদর্শিত হবে যেখানে ইনপুট মান 'PERL'।

আপনি থেকে স্ট্রিং তুলনা সম্পর্কে আরও জানতে পারেন এই টিউটোরিয়াল

বিভক্ত স্ট্রিং

স্ট্রিং ডেটা ভাগ করার জন্য ব্যাশের কোন অন্তর্নির্মিত বিভক্ত ফাংশন নেই। বিভিন্ন ধরনের ডিলিমিটারের উপর ভিত্তি করে স্ট্রিং ডেটাকে ব্যাশে একাধিক উপায়ে ভাগ করা যায়। স্ট্রিং ডেটা কিভাবে ব্যাশে ভাগ করা যায় তা দেখানোর জন্য নিচের স্ক্রিপ্ট দিয়ে একটি ব্যাশ ফাইল তৈরি করুন। একটি স্ট্রিং মান ইনপুট হিসাবে নেওয়া হয়। এই স্ক্রিপ্ট এর মান ভাগ করবে $ টেক্সট স্থান ভিত্তিক। এখানে আইএফএস ডেলিমিটার সেট করতে ভেরিয়েবল ব্যবহার করা হয়। `পড়া` কমান্ড এখানে পাঠ্য মান বিভক্ত এবং একটি অ্যারে মান সংরক্ষণ করতে ব্যবহৃত হয়। জন্য অ্যারের পুনরাবৃত্তি এবং প্রতিটি উপাদানের মান মুদ্রণ করতে লুপ ব্যবহার করা হয়।

split.sh

#!/বিন/ব্যাশ
#একটি স্ট্রিং মান ইনপুট করুন
বের করে দিলএকটি স্ট্রিং মান লিখুন
পড়ুনপাঠ্য
# ডিলিমিটার সেট করুন
আইএফএস=''
#স্পেস ডিলিমিটারের উপর ভিত্তি করে একটি অ্যারেতে $ টেক্সটের মান ভাগ করুন
পড়ুন -প্রতিআগমন<<< '$ টেক্সট'
# অ্যারের প্রতিটি মান প্রিন্ট করুন
জন্যমানভিতরে '$ {arr [@]}';
কর
printf '$ মানn'
সম্পন্ন

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশsplit.sh

ইনপুট নেওয়ার পর নিম্নলিখিত আউটপুট দেখা যাবে, ব্যাশ প্রোগ্রামিং শিখুন । এই ইনপুট মান তিনটি শব্দের একটি পাঠ্য। সুতরাং, স্ট্রিংটি তিনটি ভাগে বিভক্ত।

আপনি থেকে স্ট্রিং তুলনা সম্পর্কে আরও জানতে পারেন এই টিউটোরিয়াল

স্ট্রিং কেস পরিবর্তন করা হচ্ছে

স্ট্রিং ডেটার ক্ষেত্রে পরিবর্তন করতে বেশিরভাগ স্ক্রিপ্টিং ভাষার অন্তর্নির্মিত ফাংশন রয়েছে। কিন্তু স্ট্রিং ডেটার ক্ষেত্রে ব্যাশ ব্যবহার করে পরিবর্তন করা যায় `tr` কমান্ড বা ব্যবহার করে ': উপরের' এবং ': নিম্ন' কীওয়ার্ড ব্যাশে কেস পরিবর্তনের উপায়গুলি জানতে নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন। এখানে, প্রথম স্ট্রিং ডেটা ব্যবহার করে বড় হাতের ক্ষেত্রে রূপান্তরিত হয় '^^' প্রতীক এবং দ্বিতীয় স্ট্রিং ব্যবহার করে লোয়ারকেসে রূপান্তরিত হয় `tr` কমান্ড `tr` কমান্ডটি স্ট্রিংয়ের সমস্ত বড় হাতের অক্ষর অনুসন্ধান করবে এবং অক্ষরগুলিকে ছোট হাতের মধ্যে রূপান্তর করবে।

case.sh

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

#প্রথম স্ট্রিং ডেটা শুরু করুন
পাঠ্য 1='[ইমেল সুরক্ষিত]'

#সমস্ত অক্ষরকে বড় হাতের মধ্যে রূপান্তর করে $ text1 এর মান মুদ্রণ করুন
বের করে দিল $ {ইমেল}

#দ্বিতীয় স্ট্রিং ডেটা শুরু করুন
পাঠ্য 2= 'ব্যাশ প্রোগ্রামিং বেসিকস'

#সমস্ত বড় হাতের হাতকে ছোট হাতের রূপান্তর করে $ text2 এর মান মুদ্রণ করুন
বের করে দিল $ text2 | এনএস [: উপরের:] [: নিম্ন:]

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশcase.sh

স্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।

আপনি থেকে স্ট্রিং তুলনা সম্পর্কে আরও জানতে পারেন এই টিউটোরিয়াল

উপরে যান

লুপের মাধ্যমে স্ট্রিং ডেটা পড়া

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

readstr.sh

#!/বিন/বেস
# লুপ ব্যবহার করে একটি পাঠ্যের প্রতিটি শব্দ পড়ুন
জন্যমানভিতরেব্যাশ প্রোগ্রামিংজন্যশুরু
কর
বের করে দিল $ মান
সম্পন্ন

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশreadstr.sh

স্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।

আপনি লুপ ব্যবহার করে স্ট্রিং ডেটা পুনরাবৃত্তি সম্পর্কে আরও জানতে পারেন এই টিউটোরিয়াল

উপরে যান

একটি স্ক্রিপ্ট থেকে রিটার্ন কোড ফিরিয়ে অন্য স্ক্রিপ্টে ধরা

একটি বাশ স্ক্রিপ্ট স্ক্রিপ্ট কল করে এবং ব্যবহার করে অন্য স্ক্রিপ্ট থেকে রিটার্ন কোডগুলি ধরতে পারে '$?' রিটার্ন মান পড়তে। ধরুন, একটি ব্যাশ ফাইল নামে প্রথম কার্যকর করার পরে একটি কোড প্রদান করে। নামের আরেকটি bash ফাইল তৈরি করুন সেকেন্ড এবং রিটার্ন মান ধরতে এবং অন্যান্য কিছু কাজ করতে নিম্নলিখিত স্ক্রিপ্ট যোগ করুন। উভয় ফাইলের কোড নিচে দেওয়া হল। প্রথম থেকে ফাইল ডাকা হবে সেকেন্ড স্ক্রিপ্টের শুরুতে ফাইল। প্রথম ইনপুট মানের উপর ভিত্তি করে একটি প্রস্থান কোড ফেরত দেবে। second.sh দ্বারা কোড ধরা হবে '$?' এবং 1. এর সাথে তুলনা করুন। যদি উভয় মান সমান হয় তবে এটি মুদ্রণ করবে, ইনপুট সংখ্যা 100 এর বেশি , অন্যথায় এটি মুদ্রণ হবে, ইনপুট সংখ্যা 100 এর চেয়ে কম বা সমান

প্রথম

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

বের করে দিল 'একটি সাংখ্যিক মান লিখুন'
পড়ুনn

# ইনপুট মান 100 এর কম বা সমান কিনা তা পরীক্ষা করুন
যদি [[ $ n -দ্য 100 ]]
তারপর
প্রস্থান 0
অন্য
প্রস্থান
থাকা

সেকেন্ড

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

#ফাইলটি চালান, first.sh
বাশ 'first.sh'

#চেক করুন রিটার্ন কোড 1 এর সমান বা না
যদি [ $? -ইক ]
তারপর
বের করে দিল 'ইনপুট নম্বর 100 এর চেয়ে বড়'
অন্য
বের করে দিল 'ইনপুট নম্বর 100 এর চেয়ে কম বা সমান'
থাকা

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশসেকেন্ড

নিম্নোক্ত আউটপুটটি প্রদর্শিত হবে যখন স্ক্রিপ্টটি 55 এবং 110 দ্বারা দুইবার চালানো হবে।

উপরে যান

ফাইল পড়া এবং লেখা

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

ব্যাশে ফাইল পড়া

'নামে একটি বিদ্যমান ফাইল পড়তে নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন হার্ডওয়্যার। txt ’। এই ফাইলের বিষয়বস্তু নিচে দেওয়া হল। স্ক্রিপ্টে, ফাইলের পুরো বিষয়বস্তু পড়ে `বিড়াল` কমান্ডটি প্রথম এবং পরবর্তী, যখন লুপটি লাইন দ্বারা ফাইল লাইন পড়তে ব্যবহৃত হয়।

হার্ডওয়্যার। txt

মনিটর
কীবোর্ড
মাউস
স্ক্যানার
প্রিন্টার

readfile.sh

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

বের করে দিল 'বিড়াল কমান্ড ব্যবহার করে ফাইল পড়া'

# ক্যাট কমান্ড ব্যবহার করে ফাইলের বিষয়বস্তু পড়ুন
বিষয়বস্তু='বিড়ালহার্ডওয়্যার। txt'
বের করে দিল $ কন্টেন্ট

বের করে দিল 'লুপ ব্যবহার করে লাইন দ্বারা ফাইল লাইন পড়া'

# ফাইলের নাম বরাদ্দ করুন
ফাইলের নাম='hardware.txt'

# ফাইলের প্রতিটি লাইন লুপের প্রতিটি পুনরাবৃত্তি দ্বারা পড়বে
যখন পড়ুনলাইন;
কর
# লাইনটি প্রিন্ট করুন
বের করে দিল $ লাইন
সম্পন্ন<$ filename

আউটপুট:

নিম্নলিখিত কমান্ডগুলি চালান।

$বিড়ালহার্ডওয়্যার। txt
$বাশreadfile.sh

এখানে, প্রথম কমান্ডটি ফাইলের বিষয়বস্তু মুদ্রণ করবে, হার্ডওয়্যার। txt কোন বাশ স্ক্রিপ্ট চালানো ছাড়া এবং দ্বিতীয় কমান্ড এর স্ক্রিপ্ট চালাবে readfile.sh এবং ব্যবহার করে ফাইলের বিষয়বস্তু দুইবার মুদ্রণ করুন `বিড়াল` কমান্ড এবং `পড়া` while লুপ দিয়ে কমান্ড করুন। আপনি এই পরিদর্শন করতে পারেন টিউটোরিয়াল লাইন দ্বারা ফাইল লাইন পড়ার বিষয়ে আরও জানতে।

বাশে ফাইল লেখা

একটি নতুন ফাইলে নতুন বিষয়বস্তু লেখার জন্য নিম্নলিখিত স্ক্রিপ্ট সহ একটি ব্যাশ ফাইল তৈরি করুন এবং সেই ফাইলে ডেটা যুক্ত করুন।

writefile.sh

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

বের করে দিল 'কিছু লেখা লিখুন'
#স্ট্রিং ডেটা পড়ুন
পড়ুনstr1
#প্রথমবার ফাইলে ইনপুট ডেটা যুক্ত করুন
বের করে দিল $ str1 >test.txt

বের করে দিল 'অন্য কিছু লেখা লিখুন'
#আরেকটি স্ট্রিং ডেটা পড়ুন
পড়ুনstr2
#ফাইলের শেষে ইনপুট ডেটা যোগ করুন
বের করে দিল $ str2 >>test.txt

#ফাইলের সম্পূর্ণ বিষয়বস্তু দেখান
বের করে দিল 'বিড়ালtest.txt'

আউটপুট:

স্ক্রিপ্ট চালান।

$বাশwritefile.sh

স্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।

উপরে যান

পাইপ

পাইপ কোন কমান্ড আউটপুট অন্য কমান্ড ইনপুট পুনর্নির্দেশ করতে ব্যবহৃত হয়। এটি নির্দিষ্ট আউটপুট উৎপন্ন করতে বিভিন্ন ধরনের ব্যাশ কমান্ডের মধ্যে ব্যবহার করা যেতে পারে। স্ট্যান্ডার্ড ইনপুট পাইপ দ্বারা লিনাক্সে স্ট্যান্ডার্ড আউটপুটের সাথে সংযুক্ত। কাঙ্ক্ষিত আউটপুট পেতে আপনাকে পাইপ (|) চিহ্ন দিয়ে ক্রমানুসারে কমান্ড সেট করতে হবে। পাইপ ব্যবহার করে একক কমান্ডে দুই বা ততোধিক কমান্ড একসাথে কার্যকর করা যেতে পারে। একই কাজ করতে আপনাকে পাইপ ছাড়াই একাধিক লাইনে একাধিক কমান্ড চালাতে হবে। সুতরাং, সংক্ষিপ্ত আকারে অনেক ধরণের কাজ করার জন্য পাইপ ব্যবহার করা খুবই উপকারী।

বাক্য গঠন:

কমান্ড 1|কমান্ড 2|...

এখানে, কমান্ড 1 এর আউটপুট কমান্ড 2 এর ইনপুট হিসাবে পাস করা হবে।

এই বিভাগের পরবর্তী অংশে পাইপ দিয়ে এবং পাইপ ছাড়া একই ধরণের কাজ করা হয়। ধরুন একটি টেক্সট ফাইল নামে marks.txt নিম্নলিখিত ডেটা দিয়ে দেওয়া হয়।

marks.txt

Asraf CSE-409 79

কবির সিএসই-304 95

কেয়া সিএসই-101 67

Asraf CSE-304 88

কেয়া সিএসই-409 .০

Asraf CSE-101 92

আপনাকে ফাইলের ডেটা সাজাতে হবে এবং শিক্ষার্থীর নাম ‘কে’ এর সমস্ত এন্ট্রি খুঁজে বের করতে হবে এবং মুদ্রণ করতে হবে হ্যাঁ ' । আপনি পরবর্তী বিভাগে দেখানো পাইপ ব্যবহার না করে একাধিক কমান্ড চালানোর মাধ্যমে এই কাজটি করতে পারেন। কাঙ্ক্ষিত আউটপুট পেতে নিম্নলিখিত কমান্ডগুলি চালাতে হবে। প্রথম কমান্ড ফাইলটি সাজাবে। দ্বিতীয় কমান্ড এন্ট্রি 'কে' অনুসন্ধান করবে হ্যাঁ ' ব্যবহার করে ` খপ্পর `কমান্ড এবং আউটপুট সঞ্চয় করুন একটি temp.txt ফাইল তৃতীয় কমান্ড a এর মোট লাইন গণনা করবে temp.txt ব্যবহার করে ফাইল `wc` কমান্ড

$সাজানmarks.txt
$খপ্পর 'কেয়া'marks.txt>temp.txt
$wc -দ্যtemp.txt

আউটপুট:

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

আপনি উপরের তিনটি কমান্ড সহজেই একত্রিত করতে পারেন এবং নিম্নলিখিত কমান্ডে দেখানো পাইপ দিয়ে একটি একক কমান্ড চালানোর মাধ্যমে একই আউটপুট পেতে পারেন। আউটপুট পেতে এখানে কোন অস্থায়ী ফাইলের প্রয়োজন নেই। এখানে, `এর আউটপুট সাজান `কমান্ড` এর ইনপুট হিসাবে পাস করা হবে খপ্পর `কমান্ড এবং` এর আউটপুট খপ্পর `কমান্ড ইনপুট হিসাবে পাস করা হবে `wc` কমান্ড

$সাজানmarks.txt| খপ্পর 'কেয়া' | wc -দ্য

আউটপুট:

উপরের কমান্ডটি চালানোর পরে আপনি পূর্ববর্তী কমান্ডের আউটপুটের মতো নিম্নলিখিত আউটপুট পাবেন। কমান্ডের আউটপুট হবে 2।

উপরে যান

উপসংহার:

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