কম্পিউটার

6 ব্যাশ শর্তসাপেক্ষ এক্সপ্রেশন উদাহরণ ( -e, -eq, -z, !=, [, [[ ..)

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


এখানে বেশ কিছু শর্তসাপেক্ষ অভিব্যক্তি আছে যা ফাইলের সাথে পরীক্ষা করতে ব্যবহার করা যেতে পারে। নিম্নোক্ত কয়েকটি শর্তসাপেক্ষ অভিব্যক্তি যা সহায়ক।

  • [ -e filepath ] ফাইল বিদ্যমান থাকলে সত্য ফেরত দেয়।
  • [ -x filepath ] যদি ফাইলটি বিদ্যমান থাকে এবং এক্সিকিউটেবল থাকে তাহলে সত্য ফেরত দেয়।
  • [ -S ফাইলপথ ] ফাইলটি বিদ্যমান থাকলে এবং এটি একটি সকেট ফাইল থাকলে সত্য ফেরত দেয়।
  • [ expr1 -a expr2 ] উভয় অভিব্যক্তি সত্য হলে সত্য দেখায়।
  • [ expr1 -o expr2 ] এক্সপ্রেশন 1 বা 2 এর যেকোনো একটি সত্য হলে সত্য দেখায়।

ফাইল, স্ট্রিং এবং সংখ্যা পরীক্ষা করার জন্য আরও শর্তসাপেক্ষ অভিব্যক্তির জন্য অনুগ্রহ করে ব্যাশ ম্যান পৃষ্ঠাটি দেখুন৷

ব্যাশ উদাহরণ 1. ফাইলের অস্তিত্ব পরীক্ষা করুন

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

$ cat exist.sh
#! /bin/bash
file=$1
if [ -e $file ]
then
	echo -e "File $file exists"
else
	echo -e "File $file doesnt exists"
fi

$ ./exist.sh /usr/bin/boot.ini
File /usr/bin/boot.ini exists

বিভিন্ন ব্যাশ ইফ স্টেটমেন্টের ধরন বুঝতে আমাদের আগের নিবন্ধটি পড়ুন।

ব্যাশ উদাহরণ 2. সংখ্যার তুলনা করুন

নীচের স্ক্রিপ্টটি ব্যবহারকারীর কাছ থেকে দুটি পূর্ণসংখ্যা পাঠ করে এবং উভয় সংখ্যাই একে অপরের থেকে সমান বা বড় বা কম কিনা তা পরীক্ষা করে।

$ cat numbers.sh
#!/bin/bash
echo "Please enter first number"
read first
echo "Please enter second number"
read second

if [ $first -eq 0 ] && [ $second -eq 0 ]
then
	echo "Num1 and Num2 are zero"
elif [ $first -eq $second ]
then
	echo "Both Values are equal"
elif [ $first -gt $second ]
then
	echo "$first is greater than $second"
else
	echo "$first is lesser than $second"
fi

$ ./numbers.sh
Please enter first number
1
Please enter second number
1
Both Values are equal

$ ./numbers.sh
Please enter first number
3
Please enter second number
12
3 is lesser than 12

আপনি যদি ব্যাশ স্ক্রিপ্টিং-এ নতুন হন, আমাদের ব্যাশ পরিচিতি টিউটোরিয়াল পড়ুন।

<কেন্দ্র>

ব্যাশ উদাহরণ 3. মৌলিক পাটিগণিত ক্যালকুলেটর

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

$ cat calculator.sh
#!/bin/bash
inp1=12
inp2=11
echo "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo -n "Please choose a word [1,2 or 3]? "
read oper

if [ $oper -eq 1 ]
then
	echo "Addition Result " $(($inp1 + $inp2))
else
	if [ $oper -eq 2 ]
	then
		echo "Subtraction Result " $(($inp1 - $inp2))
	else
		if [ $oper -eq 3 ]
		then
			echo "Multiplication Result " $(($inp1 * $inp2))
		else
			echo "Invalid input"
		fi
	fi
fi

$ ./calculator.sh
1. Addition
2. Subtraction
3. Multiplication
Please choose a word [1,2 or 3]? 4
Invalid input

ব্যাশ স্পেশাল প্যারামিটার ( $*, $@, $#, $$, $!, $?, $-, $_ ) কীভাবে ব্যবহার করবেন তা জানা আপনার স্ক্রিপ্টিং জীবনকে সহজ করে তুলবে।

ব্যাশ উদাহরণ 4. আইপি ঠিকানা পড়ুন এবং পিং করুন

নিম্নলিখিত স্ক্রিপ্টটি আইপি ঠিকানাটি পড়তে এবং আইপি ঠিকানাটি পৌঁছানো যায় কিনা তা পরীক্ষা করতে ব্যবহৃত হয় এবং উপযুক্ত বার্তাটি প্রিন্ট করে৷

$ cat ipaddr.sh
#!/bin/bash
echo "Enter the Ipaddress"
read ip

if [ ! -z $ip ]
then
	ping -c 1 $ip
	if [ $? -eq 0 ] ; then
		echo "Machine is giving ping response"
	else
		echo "Machine is not pinging"
	fi
else
	echo "IP Address is empty"
fi

$ ./ipaddr.sh
Enter the Ipaddress
10.176.191.106

Pinging 10.176.191.106 with 32 bytes of data:

Reply from 10.176.191.106: bytes=32 time&lt;1ms TTL=128

Ping statistics for 10.176.191.106:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Machine is giving ping response

এই উদাহরণে, আইপ্যাডড্রেস শূন্যের দৈর্ঘ্য হলে -z সত্য ফেরত দেয়, যখন কন্ডিশন এর আগে থাকে! (negate) অপারেটর, অভিব্যক্তি মিথ্যা হলে, এটি যদি অংশে প্রবেশ করে এবং কার্যকর করে। তাই যখন আইপি ঠিকানাটি শূন্য না হয়, তখন এটি প্রবেশ করে এবং আইপি ঠিকানাটি পৌঁছানো যায় কিনা তা পরীক্ষা করে।

ব্যাশ উদাহরণ 5. ইনস্টলার স্ক্রিপ্ট

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

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

$ cat preinstaller.sh
#!/bin/bash
if [ `whoami` != 'root' ]; then
	echo "Executing the installer script"
	./home/oracle/databases/runInstaller.sh
else
	echo "Root is not allowed to execute the installer script"
fi

Executing the script as a root user,
# ./preinstaller.sh
Root is not allowed to execute the installer script

এই উদাহরণে whoami কমান্ডের আউটপুটকে "রুট" শব্দের সাথে তুলনা করা হয়েছে। স্ট্রিং তুলনা ==, !=, < এবং ব্যবহার করা উচিত এবং সাংখ্যিক তুলনার জন্য eq, ne,lt এবং gt ব্যবহার করা উচিত।

ব্যাশ উদাহরণ 6. উন্নত বন্ধনী

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

$ cat enhanced.sh
#!/bin/bash
echo "Enter the string"
read str
if [[ $str == *condition* ]]
then
	echo "String "$str has the word \"condition\"
fi

$ ./enhanced.sh
Enter the string
conditionalstatement
String conditionalstatement has the word "condition"
  • [ টেস্ট কমান্ডের প্রতিশব্দ। এমনকি যদি এটি শেলে অন্তর্নির্মিত থাকে তবে এটি একটি নতুন প্রক্রিয়া তৈরি করে।
  • [[ এটির একটি নতুন উন্নত সংস্করণ, যা একটি কীওয়ার্ড, কোনো প্রোগ্রাম নয়।
  • [[ কর্ন এবং ব্যাশ দ্বারা বোঝা যায়।
  • উপরের উদাহরণে, যদি $str ভেরিয়েবলে যেকোন জায়গায় "শর্ত" শব্দটি থাকে, তবে শর্তটি সত্য।
  • এটি হল শেল গ্লোবিং বৈশিষ্ট্য, যা শুধুমাত্র তখনই সমর্থিত হবে যখন আপনি [[ (দ্বৈত বন্ধনী) ব্যবহার করবেন এবং তাই অনেক আর্গুমেন্ট উদ্ধৃত করার প্রয়োজন নেই।

  1. rbash - একটি সীমাবদ্ধ ব্যাশ শেল ব্যবহারিক উদাহরণ সহ ব্যাখ্যা করা হয়েছে

  2. 6টি ব্যবহারিক উদাহরণ সহ ব্যাশ শেল ফাংশন টিউটোরিয়াল

  3. 4 ব্যাশ ইফ স্টেটমেন্টের উদাহরণ (যদি তারপর ফাই, তাহলে অন্য ফাই, যদি এলিফ অন্য ফাই, নেস্টেড যদি)

  4. 15টি উদাহরণ সহ আলটিমেট ব্যাশ অ্যারে টিউটোরিয়াল