Bash:使用Python函数Ceil - 如何做两个变量的产品ceil?

时间:2012-05-09 12:09:11

标签: python bash

我尝试运行以下代码,该代码位于Bash脚本中。

NUMBER=600
LOSS_RATE=0,3
TOT_PKT=100

test=$(python -c "from math import ceil; print ceil($NUMBER * 500.0)")
test2=$(python -c "from math import ceil; print ceil($NUMBER * $LOSS_RATE)")
echo $test
echo $test2

我打印出以下内容:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
TypeError: ceil() takes exactly one argument (2 given)
300000.0

执行第一个Python命令,但第二个导致给定的TypeError。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

Python使用.作为小数点,因为,是参数分隔符。因此,如果您使用LOSS_RATE=0.3,一切都应该可以正常工作:

> NUMBER=600
> LOSS_RATE=0.3
> python -c "from math import ceil; print ceil($NUMBER * $LOSS_RATE)"
180.0

问题出在shell脚本中。 echo代替python -c代码,您会看到它:

> echo "from math import ceil; print ceil($NUMBER * $LOSS_RATE)"
from math import ceil; print ceil(600 * )

你永远不会定义LOSS_RATE。但是,这会导致SyntaxError。由于您收到不同的错误,因此LOSS_RATE被设置为包含逗号的内容。