Có một ngàn lẻ một cách để làm điều đó. Đây là một cách sử dụng dc
(một máy tính bàn đánh bóng ngược hỗ trợ số học chính xác không giới hạn):
dc <<<"$num1 $num2 + p"
Nhưng nếu điều đó quá bash-y đối với bạn (hoặc vấn đề về tính di động), bạn có thể nói
echo $num1 $num2 + p | dc
Nhưng có lẽ bạn là một trong những người cho rằng RPN là kỳ lạ và kỳ lạ; đừng lo lắng bc
ở đây dành cho bạn:
bc <<< "$num1 + $num2"
echo $num1 + $num2 | bc
Điều đó nói rằng, có một số cải tiến không liên quan mà bạn có thể thực hiện cho kịch bản của mình:
#!/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
Như được mô tả trong Bash FAQ 022 , Bash không hỗ trợ số dấu phẩy động. Nếu bạn cần tính tổng các số dấu phẩy động, việc sử dụng một công cụ bên ngoài (như bc
hoặc dc
) là bắt buộc.
Trong trường hợp này, giải pháp sẽ là
num=$(dc <<<"$num $metab + p")
Để thêm tích lũy các số có thể nổi vào num
.