У меня есть некоторые проблемы при написании сценариев ... если кто-то может мне помочь, это было бы очень хорошо!Арифметическая проблема со сценарием оболочки
Мой скрипт:
VISITS=$((WR + RD));
SERVICE_DEMAND=$((VISITS*SERVICE_DEMAND));
И я получаю эту ошибку:
./calc_serv_demand.sh: line 12: 0.0895406: syntax error: invalid arithmetic operator (error token is ".0895406")
Может кто-нибудь мне помочь?
Я думаю, что это потому, что bash работает только с целым числом ... Мне нужно использовать значения float.
заранее спасибо
Проблема решена:
ПОЕЗДКИ = $ (эхо $ WR + $ RD | Ьс); echo $ VISITS
SERVICE_DEMAND = $ (echo $ VISITS '*' $ SERVICE_TIME | bc); echo $ SERVICE_DEMAND
HUm ... он работает на сумму, это не работает хорошо для умножения. Странно, потому что я проверил на bc manual, и он должен работать! Посмотрите: Мой скрипт: echo $ WR + $ RD | bc &> ПОСЕЩЕНИЯ; VISITS = $ (echo $ WR + $ RD | bc); # отлично работает echo $ VISITS SERVICE_DEMAND = $ (echo $ VISITS * $ SERVICE_TIME | bc); # Возвращает странные ошибки эхо $ SERVICE_DEMAND Ошибка: 0,0895406 3,42007 12,401 3,5096106 (standard_in) 1: ошибка синтаксиса (standard_in) 1: недопустимый символ: K (standard_in) 1: недопустимый символ: H (standard_in) 1: незаконный символ: T ... – Alucard
@user: Поскольку '*' имеет особое значение для оболочки, вы должны написать либо '\\ *', либо '' * ''. Кроме того, вы должны прямо присваивать результат вычисления переменной вместо вывода в файл: 'VISITS = $ (echo $ WR + $ RD | bc)'. –
@ user368453: Если вы выполняете 'echo'' '', он отображает все имена файлов в текущем каталоге. Просто поместите цитаты вокруг формулы, и она будет работать: 'SERVICE_DEMAND = $ (echo" $ VISITS * $ SERVICE_DEMAND "| bc)' –