【发布时间】:2022-01-07 12:16:20
【问题描述】:
我正在抓取输出文件的尾部,然后想将 0.000001 添加到该值。
到目前为止,我已经尝试过这种方式:
offset=0.000001
time=$(($(`tail -1 speed.txt1`) + $offset))
【问题讨论】:
-
请使用示例输入和所需输出更新问题;
tail -1 speed.txt1是否返回整数、浮点数、电子符号数或其他内容?
我正在抓取输出文件的尾部,然后想将 0.000001 添加到该值。
到目前为止,我已经尝试过这种方式:
offset=0.000001
time=$(($(`tail -1 speed.txt1`) + $offset))
【问题讨论】:
tail -1 speed.txt1 是否返回整数、浮点数、电子符号数或其他内容?
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
【讨论】: