shell脚本的算术问题

时间:2010-06-26 15:16:35

标签: linux bash scripting shell

我在编写脚本方面遇到了一些问题...如果有人可以帮助我,那就非常好!

我的脚本有:

VISITS=$((WR + RD));
SERVICE_DEMAND=$((VISITS*SERVICE_DEMAND));

我收到了这个错误:

  

./ calc_serv_demand.sh:第12行:   0.0895406:语法错误:算术运算符无效(错误标记为   ” 0.0895406" )

有人能帮助我吗?

我认为这是因为bash仅适用于整数...但我需要使用浮点值。

提前致谢


问题解决了:

VISITS = $(echo $ WR + $ RD | bc); echo $ VISITS

SERVICE_DEMAND = $(echo $ VISITS'*'$ SERVICE_TIME | bc); echo $ SERVICE_DEMAND

5 个答案:

答案 0 :(得分:5)

您可以使用bc进行浮点计算,即

echo $WR + $RD | bc

等等。

答案 1 :(得分:3)

不要使用bc,而应考虑切换到更好的编程语言。 Bash根本不适合数学。

答案 2 :(得分:2)

使用bc执行float calculations in Bash

答案 3 :(得分:2)

设置精度(小数点右边答案的位数), 写:

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 <​​/ strong>)分配给您的变量。

答案 4 :(得分:1)

您必须使用像bc这样的外部程序在脚本中执行浮点数学运算。

类似的东西:

echo ($WR+$RD)*$SERVICE_DEMAND | bc