【问题标题】:How do I add a decimal value to a value in my bash script? [duplicate]如何将十进制值添加到我的 bash 脚本中的值? [复制]
【发布时间】:2022-01-07 12:16:20
【问题描述】:

我正在抓取输出文件的尾部,然后想将 0.000001 添加到该值。

到目前为止,我已经尝试过这种方式:

offset=0.000001

time=$(($(`tail -1 speed.txt1`) + $offset))

【问题讨论】:

  • 请使用示例输入和所需输出更新问题; tail -1 speed.txt1 是否返回整数、浮点数、电子符号数或其他内容?

标签: bash decimal tail


【解决方案1】:

Bash 本身没有任何浮点能力。您需要使用其他工具在 shell 中获取浮点结果。

给定:

cat file
1
2
3

您可以在 shell 中使用bc 作为浮点数:

offset='0.000001'
printf "%s+%s\n" $(tail -1 file) "$offset" | bc
3.000001

awk:

awk -v offset="$offset" 'END{printf "%.7f\n", $1+offset}' file
3.000001

由于bc 不理解科学记数法(即1.3E6),您仍然可以在shell 中使用printf 对其进行规范化:

x=1.33E6
printf "%f\n" "$x"
1330000.000000

然后然后传给bc

offset="1e-6"
x=1.33E6
printf "%f+%f\n" "$x" "$offset"
1330000.000000+0.000001

printf "%f+%f\n" "$x" "$offset" | bc
1330000.000001

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2016-05-21
    • 2015-09-23
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多