Tôi gặp một số vấn đề về cách viết kịch bản ... nếu ai đó có thể giúp tôi, nó sẽ thực sự tốt!Vấn đề số học với kịch bản lệnh vỏ
kịch bản của tôi có:
VISITS=$((WR + RD));
SERVICE_DEMAND=$((VISITS*SERVICE_DEMAND));
Và tôi nhận được lỗi này:
./calc_serv_demand.sh: line 12: 0.0895406: syntax error: invalid arithmetic operator (error token is ".0895406")
Ai đó có thể giúp tôi?
Tôi nghĩ rằng đó là vì bash chỉ hoạt động với số nguyên ... Tôi cần sử dụng giá trị float.
cảm ơn trước
Giải quyết vấn đề:
THĂM = $ (echo $ WR + $ RD | bc); echo $ VISITS
SERVICE_DEMAND = $ (echo $ VISITS '*' $ SERVICE_TIME | bc); echo $ SERVICE_DEMAND
HUm ... nó hoạt động cho tổng, nó không hoạt động tốt cho phép nhân. Thật lạ vì tôi đã kiểm tra hướng dẫn sử dụng bc và nó sẽ hoạt động! Có giao diện: Tập lệnh của tôi: echo $ WR + $ RD | bc &> TRUY CẬP; VISITS = $ (echo $ WR + $ RD | bc); # hoạt động tốt echo $ VISITS SERVICE_DEMAND = $ (echo $ VISITS * $ SERVICE_TIME | bc); # Trả về một lỗi lạ echo $ SERVICE_DEMAND Lỗi: 0,0895406 3,42007 12,401 3,5096106 (standard_in) 1: lỗi cú pháp (standard_in) 1: ký tự không hợp: K (standard_in) 1: ký tự không hợp: H (standard_in) 1: ký tự không hợp lệ: T ... – Alucard
@user: Vì '*' có ý nghĩa đặc biệt đối với trình bao, bạn phải viết '\\ *' hoặc ''*''. Ngoài ra, bạn nên trực tiếp gán kết quả của phép tính cho biến thay vì xuất ra tệp: 'VISITS = $ (echo $ WR + $ RD | bc)'. –
@ user368453: Nếu bạn thực hiện 'echo' của' * ', nó sẽ hiển thị tất cả tên tệp trong thư mục hiện tại. Chỉ cần đặt dấu ngoặc kép xung quanh công thức và nó sẽ hoạt động: 'SERVICE_DEMAND = $ (echo" $ VISITS * $ SERVICE_DEMAND "| bc)' –