2017-10-30 20 views
2

cURLという5つのステートメントがあり、それらは単独でうまく動作し、それらをbashスクリプトにまとめようとしています。各cURLステートメントは、その前に実行されたcuRLステートメントから生成された変数に依存します。私はこれについて賢明な方法を理解しようとしています。ここに最初のcURLステートメントがあります。curlコマンドのjson出力を解析してbashに格納する

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ステートメントを使用し、実行する前のステートメントで生成された値に依存します。どのように評価されるかについての洞察

答えて

1

JSONデータの場合はsedのようなものをダウンロードしてインストールしてください。jq構造化されていないデータの場合は、sedawkgrepと同じように、構造化データをスライスしてフィルタリングし、マップして変換することができます。

< curl command > | jq --raw-output '.AssetID' 

を使用し、コマンドを実行して結果を返すために変数を使用するコマンド置換構文で保存することができます。 curlコマンドで

asset_ID=$(< curl command > | jq --raw-output '.AssetID') 

、ヘッダ情報なし出力にのみJSONデータを-iフラグをドロップ。

+1

うまくいった!ありがとう、Inian、本当にありがとう! – Kimomaru

関連する問題