将截断的JSON对象传递给jq时,数字文字无效

时间:2019-03-05 20:33:19

标签: bash

我收到来自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作为字符串,则可以正常工作。但不是这样。为什么?

1 个答案:

答案 0 :(得分:1)

考虑:

response=$(jq -n --argjson auth "${auth% *}" '$auth')

...将与过时而无法正确支持${auth::-3}(仅4.x的功能)的bash版本一起正常使用,并且还将记录足够的详细信息以跟踪由内容引起的任何问题与jq一起运行时传递给bash -x yourscript