मैं निम्नलिखित कोड स्निपेट के बारे में उलझन में हूँ:

#!/bin/bash

H=$(date +%H); 
if (( 10#$H > 5 ))
then 
        # do something
else 
        # do something else
fi

उपरोक्त कोड स्निपेट में (( 10#$H > 5 )) का क्या अर्थ है?

4
Ren 7 जिंदा 2019, 13:37

1 उत्तर

सबसे बढ़िया उत्तर

10#$H का अर्थ है आधार 10 का उपयोग करके संख्या का विस्तार करना।

यह संभवत: तारीख से किसी भी प्रमुख शून्य को हटाने के लिए किया जाता है क्योंकि बैश आधार 8 (ऑक्टल) में संख्या की व्याख्या करेगा।

उदाहरण:

$ echo "$(( 08 < 5 ))"
bash: 08: value too great for base (error token is "08")

अंकगणितीय मूल्यांकन: अग्रणी 0 वाले स्थिरांक को अष्टाधारी संख्याओं के रूप में व्याख्यायित किया जाता है। एक प्रमुख 0x या 0X हेक्साडेसिमल को दर्शाता है। अन्यथा, संख्याएं [base#]n का रूप लेती हैं, जहां base, 2 और 64 के बीच एक दशमलव संख्या है जो दर्शाती है अंकगणितीय आधार और n उस base में एक संख्या है। यदि base# को छोड़ दिया जाता है, तो आधार 10 का उपयोग किया जाता है। 9 से बड़े अंकों को उसी क्रम में लोअरकेस अक्षरों, बड़े अक्षरों, @ और _ द्वारा दर्शाया जाता है। यदि base, 36 से कम या उसके बराबर है, तो 10 और 35 के बीच की संख्याओं को दर्शाने के लिए लोअरकेस और अपरकेस अक्षरों का परस्पर उपयोग किया जा सकता है।

<उप>स्रोत: man bash

12
kvantour 7 जिंदा 2019, 13:53