टेस्ट कमांड का उपयोग लिनक्स कमांड लाइन पर दूसरे तत्व के साथ एक तत्व की तुलना करने के लिए किया जा सकता है, लेकिन यह सामान्य रूप से बाश शैल स्क्रिप्ट्स में सशर्त बयान के हिस्से के रूप में उपयोग किया जाता है जो तर्क और प्रोग्राम प्रवाह को नियंत्रित करता है।
एक मूल उदाहरण
आप टर्मिनल विंडो खोलकर बस इन आदेशों को आजमा सकते हैं ।
परीक्षण 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 -n / पथ / से / 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 मौजूद नहीं है"
सारांश
परीक्षण कमांड स्क्रिप्ट में अधिक उपयोगी है क्योंकि आप एक चर के मान को दूसरे के खिलाफ और नियंत्रण कार्यक्रम प्रवाह का परीक्षण कर सकते हैं। मानक कमांड लाइन पर, आप यह जांचने के लिए इसका उपयोग कर सकते हैं कि कोई फ़ाइल मौजूद है या नहीं