Bash脚本:指定bc输出数字格式

And*_*zak 10 format bash

问候!

我使用在我的脚本中进行一些计算.例如:

bc
scale=6
1/2
.500000
Run Code Online (Sandbox Code Playgroud)

为了在我的脚本中进一步使用,我需要"0.500000"的".500000".

你能帮帮我,为我的情况配置bc输出数字格式吗?

nad*_*000 19

在一行中:

printf "%0.6f\n" $(bc -q <<< scale=6\;1/2)
Run Code Online (Sandbox Code Playgroud)


Pau*_*ce. 5

只需在 awk 中完成所有计算和输出:

float_scale=6
result=$(awk -v scale=$floatscale 'BEGIN { printf "%.*f\n", scale, 1/2 }')
Run Code Online (Sandbox Code Playgroud)

作为替代方案,如果您希望bc单独使用 AWK 或与“bc”一起使用而不是使用 AWK,则 Bashprintf支持浮点数,即使 Bash 的其余部分不支持。

result=$(echo "scale=$float_scale; $*" | bc -q 2>/dev/null)
result=$(printf '%*.*f' 0 "$float_scale" "$result")
Run Code Online (Sandbox Code Playgroud)

上面的第二行可以是:

printf -v $result '%*.*f' 0 "$float_scale" "$result"
Run Code Online (Sandbox Code Playgroud)

其工作方式有点像sprintf会创建子shell,但不会创建子shell。


jan*_*sen 4

快速而肮脏,因为scale仅适用于十进制数字并且bc似乎没有sprintf类似的功能:

$ bc
scale = 6
result = 1 / 2
if (0 <= result && result < 1) {
    print "0"
}
print result;
Run Code Online (Sandbox Code Playgroud)