如何将小数值添加到 bash 脚本中的值?
How do I add a decimal value to a value in my bash script?
我正在抓取输出文件的尾部,然后想将该值加 0.000001。
到目前为止,我已经尝试过这种方式:
offset=0.000001
time=$(($(`tail -1 speed.txt1`) + $offset))
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", +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
我正在抓取输出文件的尾部,然后想将该值加 0.000001。
到目前为止,我已经尝试过这种方式:
offset=0.000001
time=$(($(`tail -1 speed.txt1`) + $offset))
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", +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