如何从bash中变量的curl响应中获取字符串?

如何从bash中变量的curl响应中获取字符串?,bash,curl,grep,Bash,Curl,Grep,bash脚本发送一个卷曲 curl响应示例如下 {"code":"2aaea70fdccd7ad11e4ee8e82ec26162","nonce":1541355854942} 我需要获得随机代码“2AEA70FDCCD7AD11E4EE8E82EC26162”(不带引号),并在bash脚本中使用它 使用jq从JSON中提取值,并使用命令替换捕获命令的输出: code=$(curl ... | jq -r '.code') -r(-raw)直接打印字符串,而不是在JSON中引用字符

bash脚本发送一个卷曲 curl响应示例如下

    {"code":"2aaea70fdccd7ad11e4ee8e82ec26162","nonce":1541355854942}

我需要获得随机代码“2AEA70FDCCD7AD11E4EE8E82EC26162”(不带引号),并在bash脚本中使用它

使用
jq
从JSON中提取值,并使用命令替换捕获命令的输出:

code=$(curl ... | jq -r '.code')

-r
-raw
)直接打印字符串,而不是在JSON中引用字符串。

使用
jq
从JSON中提取值,并使用命令替换捕获命令的输出:

code=$(curl ... | jq -r '.code')

-r
-raw
)直接打印字符串,而不是在JSON中引用字符串。

如果不想安装jq,也可以通过
sed
命令来实现:

json=`curl ...`
code=$(echo "$json" | sed -nE 's/.*"code":"([^\"]*)",".*/\1/p')

如果不想安装jq,也可以通过
sed
命令来实现:

json=`curl ...`
code=$(echo "$json" | sed -nE 's/.*"code":"([^\"]*)",".*/\1/p')

JSON中通常不保证键的顺序。
{“unused”:{“code”:“error_code”},“code”:“correct_code”}
-不要使用正则表达式解析JSON,请使用适当的JSON解析器。还有
{“code”:“code_with_\“_lol”}
@hanshenrik我明白你的意思了,但是这个解决方案是专门为这个问题设计的,而不是为一个通用的问题。无论如何,感谢你的评论,JSON通常不保证键的顺序。
{“unused”:“error_code”},“code”:“correct_code”}
-不要用正则表达式解析json,使用合适的json解析器。另外,
{“code”:“code_with_\“_lol”}
@hanshenrik我明白你的意思,但解决方案是专门为这个问题而设计的,而不是为一般用途的问题。无论如何,感谢jenkins在“BUILD_STATUS=$(curl--silent)中对这个请求的评论${BUILD_URL}api/json | jq-r.result')给了我“解析错误:第1行第18列的数字文字无效”第1行第18列是什么?你是说在curl的json响应中?@YoussefBoudaya:是的。它显然在抱怨它不是一个有效的json。{u类“:“hudson.model.FreeStyleBuild”,“actions”:[{u类“:“hudson.model.CauseAction”,“CauseAction”:[{“损坏类”:“胡德逊。模型。原因$UTIDETION”,“DeMaRr E'Luuluulyousf BouDaya”,“USERID”,“YouSefBoudia”,“用户名”:“Youssef Boudaya”},……詹金斯的请求“BuffdIdStury= $(卷曲-沉默{$BuffdILUR}API/JSONJJ-R)。结果))给我“解析错误:第1行第18栏无效数字文字,第3列“什么是在线1栏18?你是指在CURL的JSON响应中?”YouSefBouaya:是的,它显然不是有效的JSON。{“胡德逊。模型。自由模式”,“动作”:[ {“HysOn.Mask.AcEcActuple”,“原因”):[ {“胡类”:“胡德生。模型。原因$URIDID损坏原因”,“简短描述”):“D·MARR RePar L'UpLISTUUR YouSef Boudia”,“userId”:“youssefboudaya”,“userName”:“Youssef Boudaya”}]}。。。