bash - 将json值提取到zsh shell脚本中的变量
问题描述
我正在尝试从远程 api 获取货币的价值,以便以后可以通过一些计算来运行它。但是,我不能将此值分配给变量。
#!/usr/bin/env zsh
result = $(curl -s -X GET "https://openexchangerates.org/api/latest.json?app_id=SOME_KEY" | jq '.rates.GBP')
echo $result
这导致:
> ./script.sh:5: command not found: result
解决方案
在类似 Bourne 的 shell(例如,sh、bash、zsh)中,等号周围不能有空格。当 zsh 看到这一行时会发生什么:
result = $(curl -s -X GET "https://openexchangerates.org/api/latest.json?app_id=SOME_KEY" | jq '.rates.GBP')
它认为这result
是命令的名称,等号及其后面的内容是该命令的参数。为避免这种情况,只需执行以下操作:
result=$(curl -s -X GET "https://openexchangerates.org/api/latest.json?app_id=SOME_KEY" | jq '.rates.GBP')
ETA:我确实注意到错误的行号是 5,而不是我期望的 3。我不知道这是否是因为 CR/LF 行尾问题,如果您向我们展示的脚本中缺少某些内容,或者其他原因。
推荐阅读
- lighthouse - 我如何询问有关“修复 Lighthouse 返回的错误”的问题?
- sql - Oracle 中的唯一约束和数据规范化
- android - 如何使用 RxTextView (RxBinding) 检测 EditText 何时为空
- java - 重用 Java 扫描器
- java - Spring Boot 中 SQL Server 的多个架构
- excel-formula - Excel - 尝试为另一列中的每个唯一值对一列中的前 4 个值进行排名
- node.js - mongodb 将数据插入对象数组并更新它
- angular - “错误:未捕获(承诺):TypeError:Object(...)不是函数”使用UniqueDeviceID
- javascript - GScript 变量未定义
- php - PHP 注册表单的验证和插入问题