十进制值不是用bash打印的?

时间:2018-05-04 05:08:18

标签: linux bash shell awk

我想评估表达式并将输出正确显示到3个小数位,我尝试使用下面的代码,但它不起作用帮助我在bash中如何做到这一点。

echo -e "Enter expression to calculate : \c"
read num
let a=num
printf '%f\n' "$a"

Input :  5+50*3/20 + (19*2)/7

Output :  17.000000

Desired Output : 17.929

3 个答案:

答案 0 :(得分:3)

使用bc

echo 'scale=3; 5+50*3/20 + (19*2)/7' | bc -l

输出:

17.928

答案 1 :(得分:2)

而不是let a=num,例如:

echo $num | bc 
17.92857142857142857142

答案 2 :(得分:1)

这是非常罕见的情况之一,让shell变量扩展成为awk脚本正文的一部分是可以接受的:

$ num='5+50*3/20 + (19*2)/7'

$ awk 'BEGIN{print '"$num"'}'
17.9286

$ awk 'BEGIN{printf "%0.3f\n", '"$num"'}'
17.929