У меня есть некоторые проблемы о сценариях..., если бы кто-то мог бы помочь мне, это было бы действительно хорошо!
Мой сценарий имеет:
VISITS=$((WR + RD));
SERVICE_DEMAND=$((VISITS*SERVICE_DEMAND));
И я получаю эту ошибку:
./calc_serv_demand.sh: строка 12: 0.0895406: синтаксическая ошибка: недопустимый арифметический оператор (ошибочный маркер ".0895406"),
Кто-то может помочь мне?
Я думаю, что это - потому что удар работает только с целым числом... Я должен использовать значения плавающие, все же.
заранее спасибо
Проблема решила:
$ VISITS= (повторяют $WR + $RD | до н.э); $VISITS эха
$ SERVICE_DEMAND= (повторяют $VISITS '*' $SERVICE_TIME | до н.э); $SERVICE_DEMAND эха
Вы можете использовать bc
для вычислений с плавающей запятой, то есть
echo $WR + $RD | bc
и так далее.
Используйте bc
для выполнения вычислений с плавающей точкой в Bash.
Вместо использования bc
рассмотрите возможность перехода на лучший язык программирования. Баш просто не подходит для математики.
Чтобы установить точность (количество цифр ответа справа от десятичной точки), напишите:
WR=5
RD=7
VISITS=$[WR+RD]
SERVICE_DEMAND=.0895406
SERVICE_DEMAND=`echo "scale=5; $VISITS * $SERVICE_DEMAND" |bc -l`
echo Service Demand = $SERVICE_DEMAND
Это выводит:
Service Demand = 1.0744872
scale = 5 устанавливает 5-значную точность; обратные кавычки заставляют содержащееся выражение быть вычисляется, и выход (из bc -l ) должен быть назначен вашей переменной.
Вам придется использовать внешнюю программу типа bc
для выполнения математики с плавающей точкой в ваших скриптах.
Что-то вроде:
echo ($WR+$RD)*$SERVICE_DEMAND | bc