Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

व्यावहारिक Bash अंकगणित: उदाहरणों के साथ चरण-दर-चरण गाइड

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

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

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

declare -i e=2.5

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

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

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

वेरिएबल घोषणा का उपयोग करना

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

# वेरिएबल को पूर्णांक के रूप में घोषित करना declare -i x=4 declare -i y=2 # पूर्णांक वेरिएबल के साथ अंकगणित करना result=x/y echo $result

यह लौटाएगा:

2

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

डबल ब्रैकेट/पैरेंथेसिस का उपयोग करना

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

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

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

उपरोक्त Bash स्क्रिप्ट स्निपेट एक्सप्रेशन के सही मूल्यांकन को आउटपुट करेगा:

9

…क्योंकि ब्रैकेटेड अंकगणितीय एक्सप्रेशन को संख्या वाले वेरिएबल वाले के रूप में ठीक से व्याख्या किया गया है, बजाय उन्हें स्ट्रिंग्स के रूप में व्यवहार करने के।

ब्रैकेट के बिना:

y=$x+3

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

6+3

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

समर्थित गणितीय ऑपरेटर

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

+ जोड़
– घटाव
++ इन्क्रीमेंट
— डिक्रीमेंट
* गुणा
/ भाग
% शेष
** घातांक

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

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

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

Bash बूलियन ऑपरेशन के बारे में अधिक यहां देखें

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

bc कमांड का उपयोग करना

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

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

bc OPTIONS FILE

जहां:

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

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

echo "2.32+3.45" | bc

…जो सही उत्तर आउटपुट करेगा:

5.77

पाइपिंग और कमांड-लाइन एप्लिकेशन इनपुट/आउटपुट रीडायरेक्ट करने पर पूरी जानकारी यहां देखें।

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

man bc

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


  1. rbash: रिस्ट्रिक्टेड Bash शेल में महारत - अवधारणाएं, उपयोग और व्यावहारिक उदाहरण rbash: रिस्ट्रिक्टेड Bash शेल में महारत - अवधारणाएं, उपयोग और व्यावहारिक उदाहरण

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

  1. Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स

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

  1. Bash स्क्रिप्टिंग में मास्टर करें: 5 वास्तविक-विश्व उदाहरणों के साथ एक व्यावहारिक परिचय Bash स्क्रिप्टिंग में मास्टर करें: 5 वास्तविक-विश्व उदाहरणों के साथ एक व्यावहारिक परिचय

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