มีวิธีหนึ่งพันวิธี นี่คือหนึ่งในการใช้งานdc
(เครื่องคิดเลขแบบตั้งโต๊ะขัดเงาซึ่งรองรับเลขคณิตความแม่นยำไม่ จำกัด ):
dc <<<"$num1 $num2 + p"
แต่ถ้ามันดีเกินไปสำหรับคุณ (หรือเรื่องการพกพา) คุณสามารถพูดได้
echo $num1 $num2 + p | dc
แต่บางทีคุณอาจเป็นหนึ่งในคนที่คิดว่า RPN น่ากลัวและแปลกประหลาด ไม่ต้องกังวล! 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
ตามที่อธิบายไว้ในBash FAQ 022 Bash ไม่รองรับตัวเลขทศนิยม หากคุณต้องการรวมจำนวนจุดลอยตัวจำเป็นต้องใช้เครื่องมือภายนอก (เช่นbc
หรือdc
)
ในกรณีนี้การแก้ปัญหาจะเป็น
num=$(dc <<<"$num $metab + p")
ในการเพิ่มจำนวนจุดลอยตัวที่เป็นไปnum
ได้