将json值提取到zsh shell脚本中的变量[重复]

问题描述 投票:0回答:1
我正在尝试从远程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

bash shell jq
1个回答
2
投票
在类似Bourne的外壳中,等号附近不能有空格(例如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行尾问题,还是您向我们展示的脚本中缺少某些内容,或者其他原因。    
© www.soinside.com 2019 - 2024. All rights reserved.