curl
macOSで次のコマンドを使用してJSON APIを呼び出そうとします。
curl https://api.ipify.org?format=json
次の内容を返します。
{"ip":"xxx.xxx.xxx.xxx"}
この応答からIPアドレスを抽出し、curl
それを使用して別のコマンドを実行したいと思います。
curl https://api.ipify.org?format=json | curl http://my.api.com?query=<IP RESULT>
sed
失敗した試みの中には、正規表現を使用したコマンドによるパイピングが含まれていました。
ベストアンサー1
curl 'https://api.ipify.org?format=json' | jq -r '.ip'
これは、JSON応答から最上位キーにjq
関連付けられた値を抽出するために使用されます。ip
curl
その後、それを使用して別の電話をかけることができますcurl
。
ipaddr=$( curl 'https://api.ipify.org?format=json' | jq -r '.ip' )
curl "http://my.api.com?query=$ipaddr"
また、URLにはシェルが特別に処理するその他の文字を?
含めることができるため、コマンドラインから常に引用する必要があります。&
jq
合格できる自分で作ったmacOSで。
それともできます。pLumoがコメントで提案したように、JSON形式の応答を要求しないでくださいapi.ipfy.org
。
ipaddr=( curl 'https://api.ipify.org' )
curl "http://my.api.com?query=$ipaddr"