shell float number in expr
I'm trying to get a float number fro开发者_StackOverflow中文版m this :
totalmark=$(expr $sum / $subjects )
Is this correct?
bash doesn't support floats, use awk or bc/dc
eg awk
totalmark=$(awk 'BEGIN{print $sum / $subjects}')
or bc
totalmark=$(echo "scale=2;$sum/$subjects"|bc)
if you have the luxury to use different shells other than bash, try zsh or ksh
$ zsh -c 'echo $((4/1.3))'
3.0769230769230766
$ ksh -c 'echo $((4/1.3))'
3.07692307692307692
I don't think bash has floating-point capabilities. You can try:
echo "$sum/$subjects" | bc -l
Bash doesn't support floating point arithmetic. Try bc
instead.
totalmark=$(echo "scale=4;$sum/$subjects"|bc)
By the way, three answers say that Bash doesn't support floating point arithmetic. While that is true, expr
is an external program (/usr/bin/expr
for me) and it's the one, in particular, in this case which doesn't support floats.
精彩评论