इसे करने के एक हजार और एक तरीके हैं। यहां एक का उपयोग किया गया है 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
।