इसे करने के एक हजार और एक तरीके हैं। यहां एक का उपयोग किया गया है dc(एक रिवर्स-पॉलिश डेस्क कैलकुलेटर जो असीमित सटीक अंकगणित का समर्थन करता है):
dc <<<"$num1 $num2 + p"
लेकिन अगर वह आपके लिए या (या पोर्टेबिलिटी के मामलों में) बाश-वाई है तो आप कह सकते हैं
echo $num1 $num2 + p | dc
लेकिन शायद आप उन लोगों में से एक हैं जो सोचते हैं कि आरपीएन icky और अजीब है; चिंता मत करो! bcयहाँ आपके लिए है:
bc <<< "$num1 + $num2"
echo $num1 + $num2 | bc
उन्होंने कहा, कुछ असंबंधित सुधार हैं जो आप अपनी स्क्रिप्ट में कर सकते हैं:
#!/bin/bash
num=0
metab=0
for ((i=1; i<=2; i++)); do
for j in output-$i-* ; do # 'for' can glob directly, no need to ls
echo "$j"
# 'grep' can read files, no need to use 'cat'
metab=$(grep EndBuffer "$j" | awk '{sum+=$2} END { print sum/120}')
num=$(( $num + $metab ))
done
echo "$num"
done
जैसा कि बाश एफएक्यू 022 में वर्णित है , बैश मूल रूप से फ्लोटिंग पॉइंट नंबरों का समर्थन नहीं करता है। यदि आपको फ्लोटिंग पॉइंट नंबरों की आवश्यकता है तो बाहरी उपकरण (जैसे bcया dc) के उपयोग की आवश्यकता है।
इस मामले में समाधान होगा
num=$(dc <<<"$num $metab + p")
संभवतः संचय-फ़्लोटिंग-पॉइंट संख्याओं को जोड़ने के लिए num।