以浮点数为字符串并在Bash中进行运算
Taking Floating Point Number as String and Performing Aritmetic in Bash
我有以下 Bash 代码,它运行 C++ 二进制文件 (./code
) 并存储结果:
#!/bin/bash
output=$(./code /);
read -ra arr -d '' <<<"$output"
value=${arr[-1]}
sum=$value+1.034
echo $sum
我希望它能够获取变量 sum
的值,这是一个小于零的数字,即 0.01357
并且能够向其添加另一个浮点数,在将结果输出到屏幕之前。
所以结果应该是1.04757,但是我目前得到的输出是:
0.01357+1.034
Bash 不支持浮点运算。您需要另一个程序为您计算。
以下是使用 bc
、awk
或 GNU datamash
:
的三个示例
#!/bin/bash
read -ra arr -d '' <<<"$(./code /)"
# bc
printf '%s + %s\n' "${arr[-1]}" "1.034" | bc
# or awk
#awk -v val="${arr[-1]}" 'BEGIN{print val + 1.034}'
# or datamash
#datamash sum 1 <<<$(printf '%s\n' "${arr[-1]}" "1.034")
我有以下 Bash 代码,它运行 C++ 二进制文件 (./code
) 并存储结果:
#!/bin/bash
output=$(./code /);
read -ra arr -d '' <<<"$output"
value=${arr[-1]}
sum=$value+1.034
echo $sum
我希望它能够获取变量 sum
的值,这是一个小于零的数字,即 0.01357
并且能够向其添加另一个浮点数,在将结果输出到屏幕之前。
所以结果应该是1.04757,但是我目前得到的输出是:
0.01357+1.034
Bash 不支持浮点运算。您需要另一个程序为您计算。
以下是使用 bc
、awk
或 GNU datamash
:
#!/bin/bash
read -ra arr -d '' <<<"$(./code /)"
# bc
printf '%s + %s\n' "${arr[-1]}" "1.034" | bc
# or awk
#awk -v val="${arr[-1]}" 'BEGIN{print val + 1.034}'
# or datamash
#datamash sum 1 <<<$(printf '%s\n' "${arr[-1]}" "1.034")