2010-09-03 32 views
7

gì cách thanh lịch đơn giản tốt nhất để tổng hợp số trong ksh hoặc bash ví dụ của tôi là về để lệnh, nhưng tôi muốn tìm cách tốt hơn để tóm tắt tất cả các sốvỏ kịch bản + số tiền

ví dụ

num1=1232 
num2=24 
num3=444 
. 
. 
. 

let SUM=$num1+num2+num3......... 

Trả lời

17

làm thế nào về:

num1=1232 
num2=24 
num3=444 
sum=$((num1+num2+num3)) 
echo $sum # prints 1700 
0

bạn có thể sử dụng $(()) cú pháp, nhưng nếu bạn có số thập phân, sử dụng awk, hoặc bc/dc làm toán của bạn, "portably".

3

Đồng ý với ghostdog74. Tôi đã từng sử dụng hàm built-in $ (()), nhưng tôi đã thay đổi thành bc vì định dạng mà chúng tôi nhận được dữ liệu không phải là "định dạng số". Kiểm tra bên dưới:

[email protected]:/tmp> echo $((017 + 2)) 
17 
[email protected]:/tmp> echo $((17 + 2)) 
19 
[email protected]:/tmp> 

Có vẻ như trong trường hợp 1 nó hiểu là số nhị phân hoặc số hex .. không chắc lắm.

Vì vậy, tôi đã thay đổi thành bc. Bạn có thể chọn cách Mà bạn thích:

bc << EOF 
$num1 + $num2 + $num3 
EOF 

hoặc

bc <<< "$num1 + $num2 + $num3" 

Có nguội đi những cách khác để làm điều này ... nhưng nó sẽ là tốt nếu bạn gửi thêm chi tiết, như thế nào nếu bạn cũng thực hiện phân chia, bạn sẽ cần phải thêm đối số bc -l, để tải lib toán học.

1

Bạn có thể loại bỏ ký hiệu đô la cuối cùng và không gian tự do các toán hạng và toán tử (bao gồm biến và toán tử gán) để dễ đọc nếu bạn di chuyển dấu ngoặc kép sang bên ngoài.

num1=1232 
num2=24 
num3=444 
((sum = num1 + num2 + num3)) 

((count++)) 

((sum += quantity)) 

Bạn không thể sử dụng các nhà khai thác phong cách increment (*= /= %= += -= <<= >>= &= ^= |= ++ --) trừ khi bạn sử dụng let hoặc (()) hình thức bên ngoài (hoặc bạn đang incrementing biến hoặc làm bài tập ở phía bên tay phải).

Các vấn đề liên quan