我有五个cURL
语句可以自行运行,并尝试将它们组合在一个bash脚本中。每个cURL
语句都依赖于从它之前执行的cuRL
语句生成的变量。我试图找出最明智的方法来解决这个问题。这是第一个cURL声明;
curl -i -k -b sessionid -X POST https://base/resource -H "Content-Type: application/json" -H "Authorization: Authorization: PS-Auth key=keyString; runas=userName; pwd=[password]" -d "{\"AssetName\":\"apiTest\",\"DnsName\":\"apiTest\",\"DomainName\":\"domainNameString\",\"IPAddress\":\"ipAddressHere\",\"AssetType\":\"apiTest\"}"
这很好用,它会产生这个输出;
{"WorkgroupID":1,"AssetID":57,"AssetName":"apiTest","AssetType":"apiTest","DnsName":"apiTest","DomainName":"domainNameString","IPAddress":"ipAddressHere","MacAddress":null,"OperatingSystem":null,"LastUpdateDate":"2017-10-30T15:18:05.67-07:00"}
但是,在下一个cURL
语句中,我需要使用AssetID
中的整数来执行它。简而言之,我如何获取AssetID
值并将其存储到要在下一个语句中使用的变量中?总的来说,我将使用5个cURL
语句,它们依赖于前面语句中生成的值来执行。任何有关如何欣赏的见解。
答案 0 :(得分:2)
为jq
数据下载并安装sed
JSON
。您可以使用它来切片和过滤以及映射和转换结构化数据,同样方便sed
,awk
,grep
为非结构化数据。
< curl command > | jq --raw-output '.AssetID'
并将其存储在变量use command-substitution语法中以运行命令并返回结果。
asset_ID=$( < curl command > | jq --raw-output '.AssetID' )
在curl
命令中,删除-i
标志,仅输出JSON
数据而不显示标题信息。