如何通过Shell函数结合curl、jq与bc实现浮点乘法运算?
实现多接口数据提取与浮点乘法运算的Shell脚本
这里是调整后的完整Shell脚本,修正了原代码里的语法问题,保证可以正常运行:
# 从指定URL提取数字的函数 function func() { curl -Ss -H 'Cache-Control: no-cache' "url.com/A?limit=2" | jq -r '.[] | .[] | .blah' } function func2() { curl -Ss -H 'Cache-Control: no-cache' "url.com/B2?limit=2" | jq -r '.[] | .[] | .blah' } function func3() { curl -Ss -H 'Cache-Control: no-cache' "url.com/C3?limit=2" | jq -r '.[] | .[] | .blah' } # 执行三个数字浮点乘法运算的函数 function example() { # 使用scale指定小数点后精度,这里设为4,可根据需要调整 echo "scale=4; $(func) * $(func2) * $(func3)" | bc -l }
脚本说明:
数据提取函数(func/func2/func3):
- 每个函数通过
curl请求目标API,-Ss参数让curl保持静默(不输出进度条或非必要错误信息),Cache-Control: no-cache头确保获取到最新的缓存数据。 - 用
jq -r解析返回的JSON数据,'.[] | .[] | .blah'是根据你的JSON结构指定的提取路径,最终输出对应的数字值。如果你的JSON结构有变化,需要修改这个jq表达式来匹配实际字段位置。
- 每个函数通过
运算函数(example):
- 调用前面三个函数获取三个数字,通过
echo把乘法运算表达式传给bc -l工具执行浮点运算。scale=4用来设置运算结果保留4位小数,你可以根据需求调整这个数值。
- 调用前面三个函数获取三个数字,通过
注意事项:
- 确保你的系统已经安装了
curl、jq和bc工具,Debian/Ubuntu系可以用sudo apt install curl jq bc安装,RHEL/CentOS系用sudo yum install curl jq bc。 - 把脚本里的
url.com/A?limit=2等地址替换为实际有效的API地址,保证API返回的JSON结构符合jq解析的要求。
内容的提问来源于stack exchange,提问作者Caucasian Malaysian
相关产品推荐
相关产品推荐

