आप की परिभाषा पा सकते हैं -lt
और -gt
के दस्तावेज में test
आदेश ( man test
), या पार्टी के दस्तावेज में के बाद से test
है एक अंतर्निहित आदेश बैश में (अधिकांश अन्य गोले की तरह)।
-lt
और -gt
संख्यात्मक तुलना (कम से कम [और नहीं के बराबर], अधिक से अधिक [और नहीं के बराबर]) हैं। वहाँ भी कम / अधिक से अधिक या बराबर ऑपरेटर हैं -le
और -ge
, और बराबर और नहीं-बराबर ऑपरेटरों -eq
और -ne
। ये न्यूमेरिक ऑपरेटर होते हैं, इसलिए यदि दोनों ओर कोई संख्या नहीं है, तो त्रुटि होगी और 9
इससे कम माना जाता है 10
।
-lt
सामान्य के बजाय कारण जैसे नामों का उपयोग किया <
जाता है, चरित्र <
को पुनर्निर्देशन के रूप में व्याख्या किया जाएगा। ऑपरेटर =
और !=
भी मौजूद हैं, लेकिन वे एक स्ट्रिंग तुलना करते हैं: test 00 -eq 0
सच है जबकि test 00 = 0
झूठ है।
बैश सहित कुछ गोले भी ऑपरेटरों के हैं <
और >
जो एक स्ट्रिंग लेक्सिकोग्राफिक तुलना करते हैं, इसलिए test 9 \< 10
यह गलत है क्योंकि 9
पहले छांटा गया है 1
(बैकस्लैश चरित्र <
को पुनर्निर्देशन ऑपरेटर के रूप में व्याख्या करने से रोकता है )। ये गोले परीक्षणों के लिए डबल-ब्रैकेट सिंटैक्स भी प्रदान करते हैं, उदाहरण के लिए [[ 9 < 10 ]]
(जैसा कि विरोध किया गया [ 9 \< 10 ]
), जिसके अंदर पुनर्निर्देशन नहीं हो सकता है इसलिए <
इसे उद्धृत करने की आवश्यकता नहीं है।
echo
कोड में दिए गए कथन आपके प्रश्न का उत्तर देते हैं।