我有这个函数使用curl
和jq
作为JSON处理器迭代给定JSON的键,我的代码如下所示:(bash)
function getJSONContent {
option=""
for option in "header" "developer" "category" "description"
do
content=$(curl -s $extension_url | jq ".[\"$extension\"][\"$option\"]")
printf "$content\n"
done
}
但问题是它卷曲4次而且我没有找到更好的解决方案而没有出错。
这样做好吗?或者在Bash / Shellscript中有更好的解决方案吗?
注意:在您回答我的问题之前,请尝试对我的问题进行更改,以便更好地获得更好的答案,谢谢
答案 0 :(得分:2)
是否有更好的解决方案......?
是!
你显然只需要一次调用curl和一次调用jq,但最后只需要 至少,你应该避免多次调用curl。
避免在运行中构建jq命令""。相反,您可以传入shell(或环境)变量 在命令行上,例如使用--arg或--argjson
在这种特殊情况下,您可以通过简单地使用jq'','来避免多次调用jq。操作
简而言之,尝试以下几点:
curl -s "$extension_url" |
jq --arg extension "$extension" '
.[$extension]["header","developer","category","description"]'