Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

बैश/शैल लिपियों में गणित/अंकगणित, उदाहरणों के साथ

गणित आसान है, बैश स्क्रिप्टिंग आसान है, इसलिए बैश/शैल स्क्रिप्ट में गणित/अंकगणित करना भी आसान होना चाहिए। यह है। इसे करने का तरीका यहां बताया गया है।

इंटीजर के साथ काम करना

बैश का अंतर्निहित अंकगणित केवल पूर्णांक (पूर्ण संख्या) मानों को संभाल सकता है। यदि आप एक गैर-पूर्णांक मान के साथ एक चर घोषित करने का प्रयास करते हैं:

declare -i e=2.5

आप निम्नलिखित देखेंगे:

bash: declare: 2.5: syntax error: invalid arithmetic operator (error token is ".5")

गैर-पूर्णांक संख्याओं के साथ काम करने के लिए, आपको अपनी गणना करने के लिए एक बाहरी प्रोग्राम का उपयोग करने की आवश्यकता होगी - लेकिन पहले, यहां बताया गया है कि पूर्णांकों के साथ काम करने के लिए बिल्ट-इन बैश अंकगणित का उपयोग कैसे करें।

परिवर्तनीय घोषणा का उपयोग करना

यदि आपके चरों को  घोषणा . का उपयोग करके पूर्णांक के रूप में घोषित किया गया था कथन, आप बिना किसी विशेष विचार के अंकगणित कर सकते हैं:

# Declaring variables as integers
declare -i x=4
declare -i y=2

# Performing arithmetic with integer variables
result=x/y 

echo $result

यह वापस आ जाएगा:

2

यदि चर को पूर्णांक के रूप में घोषित किया जाता है, तो मूल्यांकन के लिए गणितीय कथन को कोष्ठक में लपेटने की आवश्यकता नहीं है।

डबल ब्रैकेट/कोष्ठक का उपयोग करना

यदि आपके चर को विशेष रूप से पूर्णांक के रूप में घोषित नहीं किया गया था, स्क्रिप्ट पैरामीटर के रूप में पारित किया गया था, या किसी प्रोग्राम से आउटपुट किया गया था, तो उन्हें डिफ़ॉल्ट रूप से स्ट्रिंग के रूप में माना जाएगा।

बैश में अंकगणित में तारों से निपटने की क्षमता है - लेकिन केवल अगर अभिव्यक्ति को डबल ब्रैकेट का उपयोग करके अंकगणितीय अभिव्यक्ति के रूप में फ़्लैग किया गया है . नीचे दिया गया उदाहरण देखें:

x = 6
((y=$x+3))
echo $y

उपरोक्त बैश स्क्रिप्ट स्निपेट अभिव्यक्ति के सही मूल्यांकन को आउटपुट करेगा:

9

...चूंकि कोष्ठक वाले अंकगणितीय व्यंजक को स्ट्रिंग के रूप में मानने के बजाय, संख्याओं वाले चरों के रूप में ठीक से व्याख्या किया गया है।

कोष्ठक के बिना:

y=$x+3

आपको आउटपुट मिलेगा:

6+3

व्यंजक को दो स्ट्रिंग्स में शामिल होने के रूप में माना जाएगा और मूल्यांकन नहीं किया जाएगा।

समर्थित गणितीय संचालिका

बैश अंतर्निर्मित अंकगणित निम्नलिखित ऑपरेटरों का समर्थन करता है:

<थ> <थ>
+ जोड़
घटाव
++ वृद्धि
कमी
* गुणा
/ डिवीजन
% शेष
** घातांक

बूलियन और अंकगणित

बूलियन ऑपरेटरों का उपयोग करते समय डबल ब्रैकेट भी देखे जाते हैं, क्योंकि मूल्यांकन की गई अभिव्यक्ति 0 या 1 लौटाएगी:

if (( x > y )); then
    echo "x is greater than y"
fi

यहां बैश बूलियन ऑपरेशंस के बारे में और देखें

दशमलव मानों के साथ कार्य करना

बीसी . का उपयोग करना कमांड

जैसा कि पहले लेख में दिखाया गया है, गैर-पूर्णांक मानों के साथ बैश अंकगणित का उपयोग करने से त्रुटि होगी।

बीसी कमांड दशमलव मान (और अधिक जटिल गणित) को संभाल सकता है। यहाँ सिंटैक्स है:

bc OPTIONS FILE

कहां:

  • विकल्प विकल्पों की एक सूची है (विकल्पों की पूरी सूची के लिए यहां देखें)
  • FILE एक टेक्स्ट फ़ाइल का पथ है जिसमें हल किए जाने वाले अंकगणित हैं।

जैसा बीसी इसमें पाइप किए जा रहे इनपुट को स्वीकार करेंगे, आपको अपने समीकरण को किसी फ़ाइल में संग्रहीत करने की आवश्यकता नहीं है; आप इसे सीधे कंसोल से पाइप कर सकते हैं:

echo "2.32+3.45" | bc

...जो इसका सही उत्तर देगा:

5.77

यहां पाइपिंग और कमांड-लाइन एप्लिकेशन इनपुट और आउटपुट को पुनर्निर्देशित करने का पूरा विवरण दिया गया है।

आप पूर्ण bc उपयोगकर्ता पुस्तिका को चलाकर देख सकते हैं:

man bc

bc कमांड के लिए जटिल गणित के लिए बहुत सारे उन्नत सिंटैक्स हैं, जिन्हें उपयोगकर्ता पुस्तिका में विस्तार से बताया गया है।


  1. rbash - एक प्रतिबंधित बैश शेल व्यावहारिक उदाहरणों के साथ समझाया गया

    लिनक्स शेल सबसे आकर्षक और शक्तिशाली में से एक है GNU /लिनक्स संचालित उपकरण। X . सहित सभी एप्लिकेशन , शेल के ऊपर बनाया गया है और लिनक्स शेल इतना शक्तिशाली है कि इसका उपयोग करके पूरे लिनक्स सिस्टम को ठीक से नियंत्रित किया जा सकता है। लिनक्स शेल का दूसरा पहलू यह है कि, यह संभावित रूप से हानिकारक हो सकत

  1. बैश शैल फंक्शन ट्यूटोरियल 6 व्यावहारिक उदाहरणों के साथ

    बैश शेल फ़ंक्शन समूह के लिए एकल नाम का उपयोग करके बाद में निष्पादन के लिए कई UNIX / Linux कमांड को समूहबद्ध करने का एक तरीका है। . बैश शेल फ़ंक्शन को नियमित यूनिक्स कमांड की तरह ही निष्पादित किया जा सकता है। शेल फ़ंक्शंस को मौजूदा शेल संदर्भ में उनकी व्याख्या करने के लिए कोई नई प्रक्रिया बनाए बिना न

  1. बैश स्क्रिप्टिंग परिचय ट्यूटोरियल 5 व्यावहारिक उदाहरणों के साथ

    हमारी चल रही यूनिक्स सेड और यूनिक्स Awk श्रृंखला के समान, हम बैश स्क्रिप्टिंग पर कई लेख पोस्ट करेंगे, जो सभी बैश स्क्रिप्टिंग तकनीकों को व्यावहारिक उदाहरणों के साथ कवर करेगा। शेल एक प्रोग्राम है, जो यूजर कमांड की व्याख्या करता है। कमांड या तो उपयोगकर्ता द्वारा सीधे दर्ज किए जाते हैं या शेल स्क्रिप्