shell中的shell浮点数

时间:2010-03-02 09:43:22

标签: bash shell

我正试图从中获取一个浮点数:

totalmark=$(expr $sum / $subjects )

这是对的吗?

4 个答案:

答案 0 :(得分:10)

bash不支持浮点数,使用awk或bc / dc

例如awk

totalmark=$(awk 'BEGIN{print $sum / $subjects}')

或bc

totalmark=$(echo "scale=2;$sum/$subjects"|bc)

如果您可以使用除bash之外的其他shell,请尝试使用zsh或ksh

$ zsh -c 'echo $((4/1.3))'
3.0769230769230766

$ ksh -c 'echo $((4/1.3))'
3.07692307692307692

答案 1 :(得分:5)

我不认为bash具有浮点功能。你可以尝试:

echo "$sum/$subjects" | bc -l

答案 2 :(得分:3)

Bash不支持浮点运算。请改为bc

答案 3 :(得分:2)

totalmark=$(echo "scale=4;$sum/$subjects"|bc)

顺便说一下,三个答案说Bash不支持浮点运算。虽然这是真的,expr是一个外部程序(/usr/bin/expr对我来说),特别是在这种情况下它不支持浮点数。