如何从此bash脚本中获得正确的结果?
#!/bin/bash
echo $(( 1/2 ))
我得到0
作为结果!所以我尝试使用这些但没有成功:
$ echo $(( 1/2.0 ))
bash: 1/2.0 : syntax error: invalid arithmetic operator (error token is ".0 ")
$ echo $(( 1.0/2 ))
bash: 1.0/2 : syntax error: invalid arithmetic operator (error token is ".0/2 ")
答案 0 :(得分:12)
bc <<< "scale=2; 1/2"
.50
如果您需要将结果存储在变量中:
res=$(bc <<< "scale=2; 1/2")
echo $res
答案 1 :(得分:2)
我曾经偶然发现了一段很好的代码,它有点利用了maken的制作方法,但将其包裹在bash
函数中:
function float_eval()
{
local stat=0
local result=0.0
if [[ $# -gt 0 ]]; then
result=$(echo "scale=$float_scale; $*" | bc -q 2>/dev/null)
stat=$?
if [[ $stat -eq 0 && -z "$result" ]]; then stat=1; fi
fi
echo $result
return $stat
}
然后,您可以将其用作:
c=$(float_eval "$a / $b")