बैश के साथ शुरू: -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.