Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Bash सशर्त अभिव्यक्तियों में मास्टर करें: -e, -eq, -z, !=, [ और [[ के साथ 6 आवश्यक उदाहरण

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

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

  • [ -e filepath ] यदि फ़ाइल मौजूद है तो सत्य लौटाता है।
  • [ -x filepath ] यदि फ़ाइल मौजूद है और निष्पादन योग्य है तो सत्य लौटाता है।
  • [ -S filepath ] यदि फ़ाइल मौजूद है और यह एक सॉकेट फ़ाइल है तो सत्य लौटाता है।
  • [ expr1 -a expr2 ] यदि दोनों अभिव्यक्ति सत्य हैं तो सत्य लौटाता है।
  • [ expr1 -o expr2 ] यदि अभिव्यक्ति 1 या 2 में से कोई भी सत्य है तो सत्य लौटाता है।

फ़ाइलों, स्ट्रिंग्स और न्यूमेरिक्स की जांच के लिए अधिक सशर्त अभिव्यक्ति के लिए कृपया bash मैन पेज देखें।

Bash उदाहरण 1. फ़ाइल अस्तित्व की जांच

निम्नलिखित Bash शेल स्क्रिप्ट कोड-स्निपेट अपने पूर्ण पथ के साथ फ़ाइलनाम प्राप्त करता है, और जांचता है कि फ़ाइल मौजूद है या नहीं और उपयुक्त जानकारी फेंकता है।

$ 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

विभिन्न bash if स्टेटमेंट प्रकारों को समझने के लिए हमारे पिछले लेख देखें।

Bash उदाहरण 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

यदि आप bash स्क्रिप्टिंग में नए हैं, तो हमारे Bash परिचय ट्यूटोरियल देखें।

Bash उदाहरण 3. बुनियादी अंकगणित कैलकुलेटर

यह उदाहरण इनपुट पढ़ता है, जो bash वेरिएबल्स (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

Bash विशेष पैरामीटर्स ($*, $@, $#, $$, $!, $?, $-, $_) का उपयोग कैसे करें, यह जानने से आपका स्क्रिप्टिंग जीवन आसान हो जाएगा।

Bash उदाहरण 4. IP पता पढ़ें और पिंग करें

निम्नलिखित स्क्रिप्ट IP पता पढ़ने और जांचने के लिए उपयोग की जाती है कि 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<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 शून्य लंबाई का है, जब शर्त ! (नकारात्मक) ऑपरेटर से पहले होती है, यदि अभिव्यक्ति गलत है, तो यह if भाग में प्रवेश करती है और निष्पादित करती है। इसलिए जब IP पता null नहीं होता, तो यह प्रवेश करता है और जांचता है कि ip पता पहुंच योग्य है या नहीं।

Bash उदाहरण 5. इंस्टॉलर स्क्रिप्ट

अधिकांश पैकेजों की इंस्टॉलर स्क्रिप्ट उनको root उपयोगकर्ता के रूप में निष्पादित करने की अनुमति नहीं देगी। स्क्रिप्ट निष्पादित करने वाले उपयोगकर्ता की जांच करती है और त्रुटि फेंकती है।

निम्नलिखित स्क्रिप्ट, आपको oracle इंस्टॉलर स्क्रिप्ट को निष्पादित करने की अनुमति देती है केवल यदि निष्पादन करने वाला उपयोगकर्ता गैर-root है।

$ 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 स्क्रिप्ट को root उपयोगकर्ता के रूप में निष्पादित करना, # ./preinstaller.sh Root is not allowed to execute the installer script

इस उदाहरण में whoami कमांड के आउटपुट की तुलना शब्द "root" से की जाती है। स्ट्रिंग तुलना के लिए ==, !=, < और > का उपयोग किया जाना चाहिए और संख्यात्मक तुलना के लिए -eq, -ne, -lt और -gt का उपयोग किया जाना चाहिए।

Bash उदाहरण 6. उन्नत ब्रैकेट्स

उपरोक्त सभी उदाहरणों में, हमने सशर्त अभिव्यक्ति को संलग्न करने के लिए केवल सिंगल ब्रैकेट्स का उपयोग किया, लेकिन bash डबल ब्रैकेट्स की अनुमति देता है जो सिंगल-ब्रैकेट सिंटैक्स के उन्नत संस्करण के रूप में कार्य करता है।

$ 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"
  • [ test कमांड का पर्याय है। भले ही यह शेल में बिल्ट-इन है, यह एक नई प्रक्रिया बनाता है।
  • [[ इसका एक नया बेहतर संस्करण है, जो एक कीवर्ड है, प्रोग्राम नहीं।
  • [[ Korn और Bash द्वारा समझा जाता है।
  • उपरोक्त उदाहरण में, यदि वेरिएबल $str में वाक्यांश "condition" कहीं भी है, तो शर्त सत्य है।
  • यह शेल ग्लोबिंग सुविधा है, जो केवल तभी समर्थित होगी जब आप [[ (डबल ब्रैकेट्स) का उपयोग करते हैं और इसलिए कई आर्ग्यूमेंट्स को उद्धृत करने की आवश्यकता नहीं होती।
  1. rbash: रिस्ट्रिक्टेड Bash शेल में महारत - अवधारणाएं, उपयोग और व्यावहारिक उदाहरण rbash: रिस्ट्रिक्टेड Bash शेल में महारत - अवधारणाएं, उपयोग और व्यावहारिक उदाहरण

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

  1. Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स

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

  1. - Bash सरणी में मास्टर करें: 15 व्यावहारिक उदाहरण और व्यापक ट्यूटोरियल

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