我尝试运行以下代码,该代码位于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。我该怎么做才能解决这个问题?
答案 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
被设置为包含逗号的内容。