我收到来自cURL的响应,如下所示:
{"username": "bot", "verified": true, "locale": "en-US", "mfa_enabled": false, "bot": true, "id": "123", "flags": 0, "avatar": null, "discriminator": "3114", "email": null} 200
存储在名为auth
的变量中
然后,我希望能够循环执行此操作的对象:
response=$(jq -c "." <<< "${auth::-3}")
请注意,我删除了最后3个字符,因为它们是状态码。
从技术上讲,它应该可以工作,但是它返回:parse error: Invalid numeric literal at line 1, column 11
如果我输入原始JSON作为字符串,则可以正常工作。但不是这样。为什么?
答案 0 :(得分:1)
考虑:
response=$(jq -n --argjson auth "${auth% *}" '$auth')
...将与过时而无法正确支持${auth::-3}
(仅4.x的功能)的bash版本一起正常使用,并且还将记录足够的详细信息以跟踪由内容引起的任何问题与jq
一起运行时传递给bash -x yourscript
。