1

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コマンドが実行されますが、2番目のコマンドは指定されたTypeErrorを引き起こします。これを解決するにはどうすればよいですか?

4

1 に答える 1

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別のエラーが発生するため、カンマを含むものに設定されているように聞こえます。

于 2012-05-09T12:12:55.767 に答える