假设我有以下 bash 脚本:
json="$(curl -s "https://nominatim.openstreetmap.org/reverse.php?lat=-23.513442&lon=-46.384794&zoom=18&format=jsonv2")"
jq '.address.road' <(echo "$json")
我基本上是使用 Nominatim API 来获取特定位置的道路名称......结果是:
"Rua Linaria"
我正在使用过程替换<(echo "$json")
来使用$json
变量的值jq
...但是,我觉得这不是最直接的方法。我已经尝试在 on 上搜索一个参数,man jq
但我没有找到对我有用的东西。在伪代码中,我想要类似的东西:
jq --getvar "$json" '.address.road'
是否有任何jq
参数可以让我这样做?还是它仅适用于文件或管道,并且在这种情况下使用进程替换是解决方法?
好吧,它适用于文件或标准输入;管道是一种使用标准输入的方式,进程替换是一种使用文件的方式。您也可以将 heredocs 或 herestrings 用于标准输入。
也就是说,您可以使用
--argjson
:所以,在你的情况下,你可以这样做:
但对我个人而言,最直接的方法是通过管道
curl
传输到jq
: