2012-05-09 47 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腳本中逗號用於小數點。 –