Skip to main content

बैश स्क्रिप्ट के भीतर टेस्ट स्थितियों का उपयोग कैसे करें

Linux Tutorial for Beginners: Introduction to Linux Operating System (जून 2026)

Linux Tutorial for Beginners: Introduction to Linux Operating System (जून 2026)
Anonim

टेस्ट कमांड का उपयोग लिनक्स कमांड लाइन पर किसी तत्व के साथ एक तत्व की तुलना करने के लिए किया जा सकता है, लेकिन यह आमतौर पर बेसल शैल स्क्रिप्ट्स में सशर्त बयान के हिस्से के रूप में उपयोग किया जाता है जो तर्क और प्रोग्राम प्रवाह को नियंत्रित करता है।

एक मूल उदाहरण

आप टर्मिनल विंडो खोलकर बस इन आदेशों को आजमा सकते हैं।

परीक्षण 1 -eq 2 && echo "yes" || गूंज "नहीं"

उपर्युक्त आदेश निम्नानुसार टूटा जा सकता है:

  • परीक्षण - इसका मतलब है कि आप तुलना करने जा रहे हैं
  • 1 - पहला तत्व जो आप तुलना करने जा रहे हैं
  • -ईक - आप कैसे तुलना कर रहे हैं। इस मामले में, आप परीक्षण कर रहे हैं कि एक नंबर दूसरे के बराबर है या नहीं।
  • 2 - तत्व जो आप पहले तत्व की तुलना कर रहे हैं
  • && - परिणाम सही होने पर निम्न कथन चलाएं
  • echo "yes" - तुलना करने के लिए आदेश अगर तुलना सही हो जाती है
  • || - परिणाम गलत होने पर निम्न कथन चलाएं
  • echo "no" - तुलना करने के लिए आदेश अगर तुलना गलत हो जाती है

संक्षेप में, आदेश 1 से 2 की तुलना कर रहा है और यदि वे मेल खाते हैं, तो गूंज "हां" कथन निष्पादित किया जाता है जो "हां" प्रदर्शित करता है और यदि वे मेल नहीं खाते हैं, तो गूंज "नहीं" कथन निष्पादित किया जाता है जो "नहीं" प्रदर्शित करता है।

संख्या की तुलना

यदि आप उन तत्वों की तुलना कर रहे हैं जो संख्याओं के रूप में पार्स करते हैं तो आप निम्न तुलना ऑपरेटर का उपयोग कर सकते हैं:

  • -ईक - मान 1 बराबर मान 2 करता है
  • -ge - मूल्य 1 बड़ा या मूल्य 2 के बराबर है
  • -gt - मूल्य 2 से मान 1 बड़ा है
  • -एल - मूल्य 1 से कम या बराबर मान 2 है
  • -एलटी - मूल्य 2 से कम मूल्य 1 है
  • -न - मान 1 बराबर मान 2 नहीं करता है

उदाहरण

परीक्षण 1 -eq 2 && echo "yes" || गूंज "नहीं"

(स्क्रीन पर "नहीं" प्रदर्शित करता है क्योंकि 1 बराबर नहीं है 2)

परीक्षण 1 -ge 2 && echo "yes" || गूंज "नहीं"

(स्क्रीन पर "नहीं" प्रदर्शित करता है क्योंकि 1 2 से अधिक या बराबर नहीं है 2)

परीक्षण 1-जीटी 2 && echo "yes" || गूंज "नहीं"

(स्क्रीन पर "नहीं" प्रदर्शित करता है क्योंकि 1 2 से बड़ा नहीं है)

परीक्षण 1 -le 2 && echo "yes" || गूंज "नहीं"

(स्क्रीन पर "हां" प्रदर्शित करता है क्योंकि 1 2 से कम या बराबर है)

परीक्षण 1 -lt 2 && echo "yes" || गूंज "नहीं"

(स्क्रीन पर "हां" प्रदर्शित करता है क्योंकि 1 2 से कम या बराबर है)

परीक्षण 1-एक 2 और echo "हां" || गूंज "नहीं"

(स्क्रीन पर "हां" प्रदर्शित करता है क्योंकि 1 बराबर नहीं है 2)

पाठ की तुलना

यदि आप तत्वों की तुलना कर रहे हैं जो स्ट्रिंग के रूप में पार्स करते हैं, तो आप निम्न तुलना ऑपरेटर का उपयोग कर सकते हैं:

  • = - स्ट्रिंग 1 मैच स्ट्रिंग 2 करता है
  • ! = - स्ट्रिंग 2 के लिए स्ट्रिंग 1 अलग है
  • -एन - स्ट्रिंग लंबाई 0 से अधिक है
  • -z - स्ट्रिंग लंबाई 0 है

उदाहरण

परीक्षण "string1" = "string2" & echo "yes" || गूंज "नहीं"

(स्क्रीन पर "नहीं" प्रदर्शित करता है क्योंकि "string1" "स्ट्रिंग 2" के बराबर नहीं है)

परीक्षण "string1"! = "string2" &&cho "yes" || गूंज "नहीं"

(स्क्रीन पर "हां" प्रदर्शित करता है क्योंकि "string1" "स्ट्रिंग 2" के बराबर नहीं है)

test -n "string1" & echo "yes" || गूंज "नहीं"

(स्क्रीन पर "हां" प्रदर्शित करता है क्योंकि "string1" में स्ट्रिंग की लंबाई शून्य से अधिक है)

test -z "string1" & echo "yes" || गूंज "नहीं"

(स्क्रीन पर "नहीं" प्रदर्शित करता है क्योंकि "string1" में स्ट्रिंग की लंबाई शून्य से अधिक है)

फाइलों की तुलना करना

यदि आप फ़ाइलों की तुलना कर रहे हैं, तो आप निम्न तुलना ऑपरेटर का उपयोग कर सकते हैं:

  • -फ - क्या फाइलों में एक ही डिवाइस और इनोड संख्याएं हैं (क्या वे एक ही फ़ाइल हैं)
  • -एनटी - दूसरी फ़ाइल की तुलना में पहली फ़ाइल नई है
  • -ओट - दूसरी फ़ाइल की तुलना में पुरानी फ़ाइल पुरानी है
  • -बी - फ़ाइल मौजूद है और विशेष ब्लॉक है
  • -सी - फ़ाइल मौजूद है और चरित्र विशेष है
  • -d - फ़ाइल मौजूद है और एक निर्देशिका है
  • -ई - फाइल मौजूद है
  • -f - फ़ाइल मौजूद है और एक नियमित फाइल है
  • -g - फ़ाइल मौजूद है और निर्दिष्ट समूह संख्या है
  • -G - फ़ाइल मौजूद है और उपयोगकर्ता के समूह द्वारा मालिक है
  • -h - फ़ाइल मौजूद है और एक प्रतीकात्मक लिंक है
  • -k - फ़ाइल मौजूद है और इसका चिपचिपा बिट सेट है
  • -एल - जैसे ही
  • -ओ - फ़ाइल मौजूद है आप मालिक हैं
  • -पी - फ़ाइल मौजूद है और एक नामित पाइप है
  • -r - फ़ाइल मौजूद है और पठनीय है
  • -s - फ़ाइल मौजूद है और शून्य से बड़ा आकार है
  • -एस - फ़ाइल मौजूद है और एक सॉकेट है
  • -t - फाइल डिस्क्रिप्टर टर्मिनल पर खोला जाता है
  • -यू - फ़ाइल मौजूद है और सेट-उपयोगकर्ता-आईडी बिट सेट है
  • -w - फ़ाइल मौजूद है और लिखने योग्य है
  • -x - फ़ाइल मौजूद है और निष्पादन योग्य है

उदाहरण

परीक्षण / पथ / से / फ़ाइल 1 -nt / path / to / file2 && "हां" गूंजें

(यदि फ़ाइल 1 फ़ाइल 2 से नया है तो शब्द "हां" प्रदर्शित किया जाएगा)

test -e / path / to / file1 && echo "yes"

(अगर फ़ाइल 1 शब्द "हां" प्रदर्शित होगा)

test -O / path / to / file1 && echo "yes"

(यदि आपके पास फ़ाइल 1 है तो शब्द "हां" प्रदर्शित होता है ")

शब्दावली

  • विशेष ब्लॉक - फ़ाइल एक ब्लॉक डिवाइस है जिसका अर्थ है कि डेटा बाइट्स के ब्लॉक में पढ़ा जाता है। ये आमतौर पर हार्ड ड्राइव जैसे डिवाइस फ़ाइलें हैं।
  • चरित्र विशेष - जब आप इसे लिखते हैं तो फाइल तुरंत कार्य की जाती है और आमतौर पर एक सीरियल पोर्ट जैसे डिवाइस होती है

एकाधिक स्थितियों की तुलना करना

इस प्रकार, सब कुछ एक चीज की तुलना किसी अन्य के खिलाफ कर रहा है, लेकिन यदि आप दो स्थितियों की तुलना करना चाहते हैं तो क्या होगा?

उदाहरण के लिए, यदि किसी जानवर के पास 4 पैर होते हैं और "म्यू" जाते हैं, तो शायद यह एक गाय है। बस 4 पैरों की जांच करने से यह गारंटी नहीं मिलती है कि आपके पास गाय है, लेकिन ध्वनि की जांच करना निश्चित रूप से करता है।

दोनों स्थितियों का परीक्षण करने के लिए एक बार में निम्नलिखित कथन का उपयोग करें:

परीक्षण 4 -eq 4 -a "moo" = "moo" && echo "यह एक गाय है" || गूंज "यह एक गाय नहीं है"

यहां का मुख्य हिस्सा है - जो कि खड़ा है तथा .

एक ही परीक्षण करने का एक बेहतर और अधिक सामान्य रूप से उपयोग किया जाने वाला तरीका है और यह निम्नानुसार है:

परीक्षण 4 -eq 4 && परीक्षण "moo" = "moo" & echo "यह एक गाय है" || गूंज "यह एक गाय नहीं है"

एक और परीक्षण जो आप बनाना चाहते हैं वह दो बयानों की तुलना कर रहा है और यदि कोई सत्य है, तो एक स्ट्रिंग आउटपुट करें। उदाहरण के लिए, यदि आप यह जांचना चाहते हैं कि "file1.txt" नाम की एक फ़ाइल मौजूद है या "file1.doc" नामक फ़ाइल मौजूद है, तो आप निम्न आदेश का उपयोग कर सकते हैं:

test -e file1.txt -o -e file1.doc &&cho "file1 मौजूद है" || गूंज "फाइल 1 मौजूद नहीं है"

यहां का मुख्य हिस्सा है-जो कि खड़ा है या .

एक ही परीक्षण करने का एक बेहतर और अधिक सामान्य रूप से उपयोग किया जाने वाला तरीका है और यह निम्नानुसार है:

test -e file1.txt || test -e file1.doc &&cho "file1 मौजूद है" || गूंज "फाइल 1 मौजूद नहीं है"

टेस्ट कीवर्ड को खत्म करना

तुलना करने के लिए आपको वास्तव में शब्द परीक्षण का उपयोग करने की आवश्यकता नहीं है। आपको बस इतना करना है कि स्क्वायर ब्रैकेट में कथन को निम्नानुसार संलग्न करें:

-e file1.txt &&cho "file1 मौजूद है" || गूंज "फाइल 1 मौजूद नहीं है"

और मूल रूप से परीक्षण के समान ही है।

अब आप यह जानते हैं कि आप निम्न स्थितियों की तुलना निम्नानुसार कर सकते हैं:

4 -eq 4 && "moo" = "moo" & echo "यह एक गाय है" || गूंज "यह एक गाय नहीं है"-e file1.txt || -e file1.doc &&cho "file1 मौजूद है" || गूंज "फाइल 1 मौजूद नहीं है"

सारांश

परीक्षण कमांड स्क्रिप्ट में अधिक उपयोगी है क्योंकि आप एक चर के मान को दूसरे के खिलाफ और नियंत्रण कार्यक्रम प्रवाह का परीक्षण कर सकते हैं। मानक कमांड लाइन पर, आप यह जांचने के लिए इसका उपयोग कर सकते हैं कि कोई फ़ाइल मौजूद है या नहीं।