You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Raspbian Shell中如何将curl响应内容保存到变量?需获取USD汇率

解决Shell脚本中curl输出存变量及提取美元汇率的问题

你之前两种方法的问题

  • 第一种var = curl http://api.nbp.pl/api/exchangerates/rates/a/usd:Shell变量赋值不能有空格,而且要捕获命令输出必须用$(命令)或反引号包裹命令,否则会把var当成命令执行,自然报错。
  • 第二种curl ... >> var:这是把curl的输出追加到名为var的文件里,不是把值赋给变量var,完全搞错了用法。

正确的实现步骤

1. 把curl响应存到变量里

用$(command)捕获curl的输出,加-s参数让curl静默运行(不显示进度条),避免多余信息干扰:

# 捕获API响应到变量
response=$(curl -s http://api.nbp.pl/api/exchangerates/rates/a/usd/)

2. 提取标签里的汇率

可以用sed命令匹配标签内容,提取中间的数值:

# 从响应中提取汇率
usd_rate=$(echo "$response" | sed -n 's/.*<MID>\(.*\)<\/MID>.*/\1/p')

完整脚本示例

#!/bin/bash

# 获取API响应
response=$(curl -s http://api.nbp.pl/api/exchangerates/rates/a/usd/)

# 提取汇率
usd_rate=$(echo "$response" | sed -n 's/.*<MID>\(.*\)<\/MID>.*/\1/p')

# 输出结果
echo "当前美元汇率(PLN):$usd_rate"

补充说明

如果API返回的是XML格式,也可以用专门的XML处理工具(比如xmllint)来提取,比正则更可靠:

usd_rate=$(echo "$response" | xmllint --xpath '//MID/text()' -)

不过需要先确保系统安装了xmllint(一般在libxml2-utils包中)。

内容的提问来源于stack exchange,提问作者rick rickardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:23:16