问题描述
我对bash脚本非常陌生,请有人可以向我指出如何完成任务的正确方向。 我有一个curl调用,它返回一个字符串,我想将其转换为json。
我的curl声明-
curl --insecure -X POST 'https://url/api/IPAM/GetIP' --header 'Content-Type: application/json' --header -d '{"key1": "value1"}'
此curl语句在执行时返回一个字符串,例如10.100.100.100
{"IP":"10.100.100.100"}
我不使用jquery或python来执行此操作,因为整个脚本将由仅了解bash的包装程序运行。
解决方法
您可以使用jq
将IP字符串处理为JSON字符串并将其打包为您选择的JSON对象。
ip="10.100.100.100"
jq --arg ip "$ip" -cn '{"IP":$ip}'
结果:
{"IP":"10.100.100.100"}
现在,如果使用示例curl POST请求的结果,则:
rawip_string=$(curl --insecure -X POST 'https://url/api/IPAM/GetIP' --header 'Content-Type: application/json' --header -d '{"key1": "value1"}')
jq --arg ip "$rawip_string" -cn '{"IP":$ip}'
,
一种不依赖jq之类的外部工具的方法是,您可以将输出ip属性获取为变量并将其连接。
$ return=$(echo 10.100.100.100)
$ echo "{\"IP\":\"${return}\"}"
{"IP":"10.100.100.100"}
,
赞
printf '{"IP":"%s"}' "$(curl --insecure -X POST 'https://url/api/IPAM/GetIP' --header 'Content-Type: application/json' --header -d '{"key1": "value1"}')"