কম্পিউটার টিউটোরিয়াল

ব্যাশ স্পেশাল প্যারামিটার মাস্টার করুন: ৪টি প্র্যাক্টিক্যাল শেল স্ক্রিপ্ট উদাহরণ

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

ব্যাশ স্পেশাল প্যারামিটার যেগুলো আমরা এই আর্টিকেলে আলোচনা করব: $*, $@, $#, $$, $!, $?, $-, $_

পজিশনাল প্যারামিটারের পুরো তালিকা অ্যাক্সেস করতে, দুটি স্পেশাল প্যারামিটার $* এবং $@ উপলব্ধ। ডাবল কোটের বাইরে, এই দুটি একই: উভয়ই পজিশনাল প্যারামিটারের তালিকা এক্সপ্যান্ড করে $1 থেকে শুরু করে (স্পেস দিয়ে সেপারেটেড)।

ডাবল কোটের ভিতরে, যestar지만, এগুলো ভিন্ন: ডাবল কোটের একটি জোড়ার ভিতরে $* সমতুল্য পজিশনাল প্যারামিটারের তালিকা, IFS-এর প্রথম ক্যারেক্টার দিয়ে সেপারেটেড “$1c$2c$3…”।

ডাবল কোটের একটি জোড়ার ভিতরে $@ সমতুল্য পজিশনাল প্যারামিটারের তালিকা, আনকোটেড স্পেস দিয়ে সেপারেটেড, অর্থাৎ “$1” “$2″..”$N”।

উদাহরণ ১: Bash $* এবং $@ ব্যবহার করে পজিশনাল প্যারামিটার এক্সপ্যান্ড করা

এই উদাহরণটি $* এবং $@-এ উপলব্ধ মান দেখায়।

প্রথমে, expan.sh নিচের মত তৈরি করুন।

$ cat expan.sh #!/bin/bash export IFS='-' cnt=1 # $*-এ উপলব্ধ ডেটা প্রিন্ট করা echo "Values of \"\$*\":" for arg in "$*" do echo "Arg #$cnt= $arg" let "cnt+=1" done cnt=1 # $@-এ উপলব্ধ ডেটা প্রিন্ট করা echo "Values of \"\$@\":" for arg in "$@" do echo "Arg #$cnt= $arg" let "cnt+=1" done

পরবর্তী, expan.sh এক্সিকিউট করুন নিচের মত $* এবং $@ কীভাবে কাজ করে সেটা দেখতে।

$ ./expan.sh "This is" 2 3 Values of "$*": Arg #1= This is-2-3 Values of "$@": Arg #1= This is Arg #2= 2 Arg #3= 3
  • উপরোক্ত স্ক্রিপ্ট IFS (Internal Field Separator) এর মান '-' দিয়ে এক্সপোর্ট করলো।
  • স্ক্রিপ্ট expan.sh-এ তিনটি প্যারামিটার পাস করা হয়েছে $1=”This is”,$2=”2″ এবং $3=”3″।
  • স্পেশাল প্যারামিটার “$*”-এর প্রতিটি মান প্রিন্ট করার সময়, এটি শুধু একটি মান দেয় যা পুরো পজিশনাল প্যারামিটার IFS দিয়ে ডিলিমিটেড।
  • যেখানে “$@” আপনাকে প্রতিটি প্যারামিটার আলাদা শব্দ হিসেবে দেয়।

উদাহরণ ২: পজিশনাল প্যারামিটার কাউন্ট করতে $# ব্যবহার

$# হলো ব্যাশে একটি স্পেশাল প্যারামিটার যা দশমিকে পজিশনাল প্যারামিটারের সংখ্যা দেয়।

প্রথমে, arithmetic.sh নিচের মত তৈরি করুন।

$ cat arithmetic.sh #!/bin/bash if [ $# -lt 2 ] then echo "Usage: $0 arg1 arg2" exit fi echo -e "\$1=$1" echo -e "\$2=$2" let add=$1+$2 let sub=$1-$2 let mul=$1*$2 let div=$1/$2 echo -e "Addition=$add\nSubtraction=$sub\nMultiplication=$mul\nDivision=$div\n"

যদি পজিশনাল প্যারামিটারের সংখ্যা ২ থেকে কম হয়, তবে নিচের মত ইউজেজ ইনফরমেশন থ্রো করবে,

$ ./arithemetic.sh 10 Usage: ./arithemetic.sh arg1 arg2

উদাহরণ ৩: প্রসেস-রিলেটেড প্যারামিটার – $$ এবং $!

স্পেশাল প্যারামিটার $$ শেলের প্রসেস আইডি দেবে। $! আপনাকে সবচেয়ে gầnে এক্সিকিউট করা ব্যাকগ্রাউন্ড প্রসেসের প্রসেস আইডি দেবে।

নিচের স্ক্রিপ্টটি শেলের প্রসেস আইডি এবং লাস্ট এক্সিকিউট করা ব্যাকগ্রাউন্ড প্রসেস আইডি প্রিন্ট করে।

$ cat proc.sh #!/bin/bash echo -e "Process ID=$$" sleep 1000 & echo -e "Background Process ID=$!"

এখন, উপরের স্ক্রিপ্টটি এক্সিকিউট করুন, এবং প্রসেস আইডি যা প্রিন্ট করছে সেটা চেক করুন।

$ ./proc.sh Process ID=9502 Background Process ID=9503 $ ps PID TTY TIME CMD 5970 pts/1 00:00:00 bash 9503 pts/1 00:00:00 sleep 9504 pts/1 00:00:00 ps $

উদাহরণ ৪: অন্যান্য ব্যাশ স্পেশাল প্যারামিটার – $?, $-, $_

  • $? সবচেয়ে gầnে এক্সিকিউট করা কমান্ডের এক্সিট স্ট্যাটাস দেয়।
  • $- set বিল্ট-ইন কমান্ড দিয়ে সেট করা অপশন
  • $_ poprzedন কমান্ডের শেষ আর্গুমেন্ট দেয়। শেল স্টার্টআপে, এক্সিকিউট হওয়া শেল স্ক্রিপ্টের অ্যাবসোলিউট ফাইলনেম দেয়।
$ cat others.sh #!/bin/bash echo -e "$_"; ## এক্সিকিউট হওয়া ফাইলের অ্যাবসোলিউট নাম /usr/local/bin/dbhome # কমান্ড এক্সিকিউট। # dbhome-এর এক্সিট স্ট্যাটাস চেক if [ "$?" -ne "0" ]; then echo "Sorry, Command execution failed !" fi echo -e "$-"; # সেট অপশন - hB echo -e $_ # পূর্বের কমান্ডের শেষ আর্গুমেন্ট।

উপরোক্ত স্ক্রিপ্টে, লাস্ট echo স্টেটমেন্ট “echo -e $_” ($ underscore)ও hB প্রিন্ট করে যা পূর্বের কমান্ডের শেষ আর্গুমেন্টের মান। তাই $_ এক্সপ্যানশনের পর মান দেবে

$ ./others.sh ./others.sh /home/oracle Sorry, Command execution failed ! hB hB

  1. Bash শেল স্ক্রিপ্টিং-এ অ্যারে অপারেশন মাস্টার করুন – পার্ট ৮

  2. rbash: রেস্ট্রিক্টেড Bash শেল মাস্টার করুন – কনসেপ্ট, ব্যবহার, এবং প্র্যাক্টিক্যাল উদাহরণ

  3. শেল ট্রেসিং মাস্টার করুন: ধাপে ধাপে কমান্ড এক্সিকিউশন ডিবাগিং

  4. ব্যাশ শেল ফাংশন মাস্টার করুন: ৬টি প্র্যাক্টিক্যাল উদাহরণ ও টিপস