bash - 将浮点数作为字符串并在 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")
推荐阅读
- python - 如何单击 Selenium 上的 javascript 链接?
- amazon-web-services - 如何使用 S3 json 文件后端在 API 网关中传递查询参数
- lua - 谁能告诉我如何在lua中设置或重置一点..?
- android - 我无法显示从图库中挑选的图像
- python-3.x - Pandas: Combine pandas columns that have the same column name
- google-cloud-platform - GCP Stackdriver alert on metric not absent
- spring-boot - 使用 Spring Boot 在 Vaadin 14 (Flow) 中拦截请求开始和结束
- bash - 仅在一定深度上等效于“cp --parents”
- python - RobotFramework:如何在关键字失败的情况下写入日志并覆盖默认颜色
- mysql - 去除MySQL中不同ID的连续重复值