Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

6 बैश सशर्त अभिव्यक्ति उदाहरण ( -e, -eq, -z, !=, [, [[ ..)

बैश एक्सप्रेशन एक बैश कंडीशनल स्टेटमेंट बनाने के लिए उपयोग किए जाने वाले ऑपरेटरों, सुविधाओं या मूल्यों का संयोजन है। कंडीशनल एक्सप्रेशन बाइनरी या यूनरी एक्सप्रेशन हो सकता है जिसमें न्यूमेरिक, स्ट्रिंग या कोई भी कमांड शामिल होता है जिसकी सफलता के समय वापसी की स्थिति शून्य होती है।


कई सशर्त अभिव्यक्तियां हैं जिनका उपयोग फाइलों के साथ परीक्षण करने के लिए किया जा सकता है। निम्नलिखित कुछ सशर्त अभिव्यक्तियाँ हैं जो सहायक हैं।

  • [ -e filepath ] अगर फ़ाइल मौजूद है तो सही है।
  • [ -x filepath ] यदि फ़ाइल मौजूद है और निष्पादन योग्य है तो सही है।
  • [ -S filepath ] यदि फ़ाइल मौजूद है और यह एक सॉकेट फ़ाइल है तो सत्य लौटाता है।
  • [ 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. IP पता पढ़ें और पिंग करें

निम्न स्क्रिप्ट का उपयोग आईपी पते को पढ़ने और यह जांचने के लिए किया जाता है कि क्या आईपी पता पहुंच योग्य है, और उपयुक्त संदेश प्रिंट करता है।

$ 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 सही लौटाता है यदि ipaddress की लंबाई शून्य है, जब शर्त से पहले ! (नकारात्मक) ऑपरेटर, यदि अभिव्यक्ति झूठी है, तो यह भाग में प्रवेश करती है और निष्पादित होती है। इसलिए जब आईपी पता शून्य नहीं होता है, तो यह प्रवेश करता है और जांचता है कि आईपी पता पहुंच योग्य है या नहीं।

बैश उदाहरण 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 - एक प्रतिबंधित बैश शेल व्यावहारिक उदाहरणों के साथ समझाया गया

    लिनक्स शेल सबसे आकर्षक और शक्तिशाली में से एक है GNU /लिनक्स संचालित उपकरण। X . सहित सभी एप्लिकेशन , शेल के ऊपर बनाया गया है और लिनक्स शेल इतना शक्तिशाली है कि इसका उपयोग करके पूरे लिनक्स सिस्टम को ठीक से नियंत्रित किया जा सकता है। लिनक्स शेल का दूसरा पहलू यह है कि, यह संभावित रूप से हानिकारक हो सकत

  1. बैश शैल फंक्शन ट्यूटोरियल 6 व्यावहारिक उदाहरणों के साथ

    बैश शेल फ़ंक्शन समूह के लिए एकल नाम का उपयोग करके बाद में निष्पादन के लिए कई UNIX / Linux कमांड को समूहबद्ध करने का एक तरीका है। . बैश शेल फ़ंक्शन को नियमित यूनिक्स कमांड की तरह ही निष्पादित किया जा सकता है। शेल फ़ंक्शंस को मौजूदा शेल संदर्भ में उनकी व्याख्या करने के लिए कोई नई प्रक्रिया बनाए बिना न

  1. अंतिम बैश ऐरे ट्यूटोरियल 15 उदाहरणों के साथ

    एक सरणी एक चर है जिसमें कई मान एक ही प्रकार के या विभिन्न प्रकार के हो सकते हैं। किसी सरणी के आकार की कोई अधिकतम सीमा नहीं है, न ही कोई आवश्यकता है कि सदस्य चर को अनुक्रमित किया जाए या सन्निहित रूप से असाइन किया जाए। ऐरे इंडेक्स शून्य से शुरू होता है। इस लेख में, आइए हम बैश में 15 विभिन्न सरणी संचा