【发布时间】:2018-11-04 18:41:01
【问题描述】:
bash 脚本发送一个 curl。 curl响应示例如下:
{"code":"2aaea70fdccd7ad11e4ee8e82ec26162","nonce":1541355854942}
我需要获取代码“2aaea70fdccd7ad11e4ee8e82ec26162”(不带引号)并在 bash 脚本中使用它。
【问题讨论】:
bash 脚本发送一个 curl。 curl响应示例如下:
{"code":"2aaea70fdccd7ad11e4ee8e82ec26162","nonce":1541355854942}
我需要获取代码“2aaea70fdccd7ad11e4ee8e82ec26162”(不带引号)并在 bash 脚本中使用它。
【问题讨论】:
使用jq 从 JSON 中提取值,并使用命令替换来捕获命令的输出:
code=$(curl ... | jq -r '.code')
-r (--raw) 直接打印字符串,而不是像在 JSON 中那样引用它。
【讨论】:
不想安装jq也可以通过sed命令实现:
json=`curl ...`
code=$(echo "$json" | sed -nE 's/.*"code":"([^\"]*)",".*/\1/p')
【讨论】:
{"unused":{"code":"wrong_code"},"code":"correct_code"} - 不要使用正则表达式解析 json,使用适当的 json 解析器。还有{"code":"code_with_\"_lol"}