我有这个函数,它使用 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 "$contentn"
done
}
但问题是它卷曲了 4 次,我没有找到更好的解决方案而不会出错。
这样做可以吗?还是在Bash/Shellscript中有一个更好的解决方案来做到这一点?
有没有更好的解决方案...?
是的!
-
您显然只需要一次调用 curl 和一次调用 jq,但在至少,您应该避免多次调用 curl。
-
避免"动态"构造 jq 命令。 相反,您可以传入 shell(或环境(变量在命令行上,例如使用 --arg 或 --argjson
-
在这种特定情况下,看起来您可以通过简单地使用 jq 的 '","' 运算符来避免多次调用 jq。
简而言之,尝试以下方法:
curl -s "$extension_url" |
jq --arg extension "$extension" '
.[$extension]["header","developer","category","description"]'