2016-02-25 14 views
8

Đây là kịch bản của tôi, nó khá tự giải thích:"không hợp lệ Arithmetic Operator" làm dấu phẩy toán trong bash

d1=0.003 
d2=0.0008 
d1d2=$((d1 + d2)) 

mean1=7 
mean2=5 
meandiff=$((mean1 - mean2)) 

echo $meandiff 
echo $d1d2 

Nhưng thay vì nhận ra ý định của tôi: 0,0038 Tôi nhận được lỗi Invalid Arithmetic Operator, (error token is ".003")?

+1

BTW, nếu bạn chuyển từ bash sang ksh93, điểm nổi sẽ có sẵn tự nhiên. –

Trả lời

15

bash không hỗ trợ số học dấu phẩy động. Bạn cần sử dụng tiện ích bên ngoài như bc.

# Like everything else in shell, these are strings, not 
# floating-point values 
d1=0.003 
d2=0.0008 

# bc parses its input to perform math 
d1d2=$(echo "$d1 + $d2" | bc) 

# These, too, are strings (not integers) 
mean1=7 
mean2=5 

# $((...)) is a built-in construct that can parse 
# its contents as integers; valid identifiers 
# are recursively resolved as variables. 
meandiff=$((mean1 - mean2)) 
+0

Nó vẫn than phiền khi tôi thay đổi số học của tôi thành định dạng = $ ((echo "" | bc))? –

+1

Đó là lỗi đánh máy, xin lỗi. Nên là '$ (...)', không phải '$ ((...))'. Thay thế lệnh và mở rộng số học hơi giống nhau. – chepner

+0

Không có cảm ơn vì sự giúp đỡ của bạn –

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