我是 BASH 的新手,了解到 printf 和 echo 都写入标准输出。但是,我通过以下示例从输入中读取表达式并将结果计算为小数点后 3 位的精度:
read exp
printf "%.3f\n" "$(echo $exp | bc -l)"
Run Code Online (Sandbox Code Playgroud)
我不明白为什么 echo 在此处作为printf语句中的参数传递。有没有其他方法可以仅使用 来表示语句echo?
之后read exp,您可以使用echo如下:
$ echo "scale=3; $exp/1" | bc
9.456
Run Code Online (Sandbox Code Playgroud)
但请注意,此命令不需要echo:
$ bc <<< "scale=3; $exp/1"
9.456
Run Code Online (Sandbox Code Playgroud)
编辑:为了获得舍入结果,您必须使用printfbash 内置函数,因为bc无法对值进行舍入。
以下命令按预期工作:
echo "scale=4; $exp" | bc | xargs printf "%.3f\n"
Run Code Online (Sandbox Code Playgroud)