2012-05-09 48 views
1

我试图运行下面的代码,它是一个Bash脚本。Bash:使用Python函数Ceil - 如何做两个变量的乘积ceil?

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的命令,但在第二使给定的类型错误。我该如何解决这个问题?

+2

LOSS_RATE = 0.3不是0,3 – Sharun

回答

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被设置为包含逗号的东西。

+0

感谢您的回复! 我已经在shell脚本中定义了这个: LOSS_RATE = 0,3 对不起,错过了上面的内容! –

+1

我们走了。使用'.'而不是',' - 我不认为有任何严肃的编程语言,其中','是小数点。 – ThiefMaster

+0

在bash脚本中逗号用于小数点。 –