2012-05-09 10 views
1

次のコードを実行しようとしましたが、これはBashスクリプトの内部にあります。Bash:Pythonの関数Ceilを使う - 2つの変数の積のceilを行うには?

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

最初のPythonコマンドが実行されるが、第二は、所与のTypeError例外を引き起こす:

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 

Iは、プリントアウト以下得ます。これを解決するにはどうすればよいですか?

+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 

問題は、シェルスクリプトです。 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

返信いただきありがとうございます! シェルスクリプトでこれを定義しました: LOSS_RATE = 0,3 –

+1

そこに行きます。 '、'の代わりに '.'を使う - '、 'が小数点である深刻なプログラミング言語はないと思う。 – ThiefMaster

+0

bash-scriptsでは、小数点にカンマが使用されます。 –

関連する問題