बैश के साथ शुरू: -Tt और -gt तर्क


24

मैं बैश से शुरू कर रहा हूँ और मैंने निम्नलिखित पाया:

if test $first -lt $second
then
  echo $first is lower than $second
else
  if test $first -gt $second
  then
    echo $first is higher than $second
  else
    echo $first and $second are equals
  fi
fi

स्क्रिप्ट को पढ़ने और उसे क्रियान्वित करने के लिए, मुझे पता है कि यह क्या करता है, लेकिन इसके लिए क्या-क्या और -tt नहीं हैं।

क्या कोई मुझे बता सकता है कि उस तरह के 'टूल' का नाम क्या है और वे (-lt और -gt) क्या करते हैं? धन्यवाद!


9
क्षमा करें, लेकिन मुझे यह इंगित करने के लायक है कि echoकोड में दिए गए कथन आपके प्रश्न का उत्तर देते हैं।
— devnull

चर के आसपास लापता उद्धरण हैं
— स्टीफन चेजेलस

जवाबों:


29

यह के लिए कम है less thanऔर greater than। इसका उपयोग बाश में पूर्णांक तुलना के लिए किया जाता है। आप टाइप करके और अधिक पढ़ सकते हैं man test:

   ....
   INTEGER1 -gt INTEGER2
          INTEGER1 is greater than INTEGER2
   ....
   INTEGER1 -lt INTEGER2
          INTEGER1 is less than INTEGER2
   ....

7

आप की परिभाषा पा सकते हैं -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 ]), जिसके अंदर पुनर्निर्देशन नहीं हो सकता है इसलिए <इसे उद्धृत करने की आवश्यकता नहीं है।


4

वे सिर्फ ऑपरेटर हैं।

बस: gtऔर ltमाध्य> (से अधिक) और <(से कम)।

आप ऑपरेटरों के बारे में अधिक जानकारी के लिए यहां देख सकते हैं :


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.